Joh*_*ler 6 containers docker google-cloud-platform kubernetes dockerhub
是否可以将私有镜像从 Docker Hub 拉到 Google Cloud Kubernetes 集群?这是推荐的,还是我需要将我的私有图像也推送到 Google Cloud?
我阅读了文档,但没有发现任何可以清楚地解释我的内容。似乎是可能的,但我不知道是否值得推荐。
使用任何您想要的注册表都没有限制。如果您仅在 pod 规范中使用镜像名称(例如镜像:nginx),镜像将从公共 docker hub 注册表中提取,标签假定为:latest
\n\n正如 Kubernetes文档中提到的:
\n\n\n\n\n容器的镜像属性支持与 docker 命令相同的语法,包括私有注册表和标签。私有注册表可能需要密钥才能从中读取图像。
\n\n使用 Google 容器注册表
\n\n当在 Google\n 计算引擎 (GCE) 上运行时, Kubernetes 对Google 容器注册表 (GCR)具有本机支持。如果您在 GCE 或 Google\n Kubernetes Engine 上运行集群,只需使用完整映像名称(例如\n gcr.io/my_project/image:tag)。集群中的所有 Pod 都可以读取此注册表中的映像。
\n\n使用 AWS EC2 容器注册表
\n\n当节点是 AWS EC2 实例时, Kubernetes 对AWS EC2 容器注册表具有本机支持。\n 只需在 Pod 中使用完整映像名称(例如\n ACCOUNT.dkr.ecr.REGION.amazonaws.com/imagename:tag)\ n 定义。集群中所有可以创建 Pod 的用户都可以运行使用 ECR 注册表中任何映像的 Pod。
\n\n使用 Azure 容器注册表 (ACR)
\n\n使用Azure 容器注册表时,您可以使用管理员用户或服务主体进行身份验证。\n 无论哪种情况,身份验证都是通过标准 Docker 身份验证完成的。这些说明假定使用 azure-cli 命令行工具。
\n\n您首先需要创建注册表并生成凭据,完整的\n 文档可以在Azure 容器注册表\n 文档中找到。
\n\n配置节点以对私有存储库进行身份验证
\n\n以下是配置节点以使用私有注册表的建议步骤。在此示例中,在您的台式机/笔记本电脑上运行这些:
\n\n\n
\n- 为您要使用的每组凭据运行 docker login [server]。此更新
\n$HOME/.docker/config.json。- 在编辑器中查看
\n$HOME/.docker/config.json以确保它仅包含您要使用的凭据。- 获取节点列表,例如:\n \n
\n\n
- 如果你想要名字:
\nnodes=$(kubectl get nodes -o jsonpath=\'{range.items[*].metadata}{.name} {end}\')- 如果你想获取IP:
\nnodes=$(kubectl get nodes -o jsonpath=\'{range\n .items[*].status.addresses[?(@.type=="ExternalIP")]}{.address}\n {end}\')- 将本地 .docker/config.json 复制到每个节点上 root 的主目录。\n \n
\n\n
- 例如:
\nfor n in $nodes; do scp ~/.docker/config.json root@$n:/root/.docker/config.json; done
\n\n\n有多种用于配置私有注册表的解决方案。\n以下是一些常见用例和建议的解决方案。
\n\n\n
\n- 仅运行非专有(例如开源)映像的集群。无需隐藏图像。\n \n
\n\n
- 使用 Docker hub 上的公共映像。\n \n
\n\n
- 无需配置。
\n- 在 GCE/Google Kubernetes Engine 上,会自动使用本地镜像来提高速度和可用性。
\n- 集群运行一些专有映像,这些映像对公司外部的人员应隐藏,但对所有集群用户可见。\n \n
\n\n
- 使用托管的私有 Docker 注册表。\n \n
\n\n
- 它可能托管在 Docker Hub 或其他地方。
\n- \n
.docker/config.json如上所述在每个节点上手动配置。- 或者,在防火墙后面运行具有开放读取访问权限的内部私有注册表。\n \n
\n\n
- 无需 Kubernetes 配置。
\n- 或者,在 GCE/Google Kubernetes Engine 上时,使用项目\xe2\x80\x99s Google 容器注册表。\n \n
\n\n
- 与手动节点配置相比,它更适合集群自动缩放。
\n- 或者,在不方便更改节点配置的集群上,使用imagePullSecrets。
\n- 具有专有映像的群集,其中一些需要更严格的访问控制。\n \n
\n\n
- 确保 AlwaysPullImages 准入控制器处于活动状态。否则,所有 Pod 都可能有权访问所有映像。
\n- 将敏感数据移动到 \xe2\x80\x9cSecret\xe2\x80\x9d 资源中,而不是将其打包在映像中。
\n- 多租户群集,其中每个租户都需要自己的专用注册表。\n \n
\n\n
- 确保
\nAlwaysPullImages准入控制器处于活动状态。否则,所有租户的所有 Pod 都可能有权访问所有映像。\n- 需要授权运行私人注册表。
\n- 为每个租户生成注册表凭据,放入机密中,并将机密填充到每个租户命名空间。
\n- 租户将该秘密添加到
\nimagePullSecrets每个名称空间。
如果您决定使用 私有注册表,请考虑阅读从私有注册表中提取映像文档。
\n| 归档时间: |
|
| 查看次数: |
2248 次 |
| 最近记录: |