当 kubectl 应用 .yaml 将自定义构建的 docker 映像部署到 GCP 中的集群(编辑掉敏感信息)时,我收到以下错误:
已尝试以下但没有运气:
- 手动部署镜像
- 检查以确保防火墙规则允许 443,并且没有任何东西阻止它
- 尝试将容器注册表设置为公共
- 检查服务帐户权限并且授权拉取的秘密就在那里
- 使用上图中给出的网址验证了拉动在我这边是否有效
- 试图摧毁整个基础设施。并重新旋转
- 确保控制平面与我们的其他环境一样
- 在我们的 terraform 中,集群和节点池具有所有必需的 0authscope
奇怪的是,我们有一个开发人员。环境完全相同(使用 terraform 启动基础设施)并使用相同的文件+图像(显然是不同的项目,因此所需的内容已更改以匹配)并且没有问题。
当您的集群出现以下情况时,通常会发生这种情况:
- 有私有节点(也称为没有公共 IP)
- 该集群所在区域没有 Cloud NAT
- 您没有在子网/vpc 上启用私有访问
基本上,错误是节点无法从注册表中提取映像。你可能有两种情况:
- 如果您的映像托管在 GCR 或 AR(Google 容器注册表或 Artifact Registry)中。即使您的节点是私有的,也必须启用 Google Private Access 以允许节点访问注册表
- 如果您的映像托管在外部注册表上(例如:Docker)。您必须拥有具有公共 IP 或 Cloud NAT 的节点才能访问互联网
- 第三种情况是,如果您在本地或其他云上有自托管注册表。您需要在 GCP 与注册表托管位置之间建立某种私有连接(VPN、互连...),并且需要配置 Cloud DNS 以将注册表解析为私有 IP
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)