配置私有容器注册表

本页介绍了如何为 Google Distributed Cloud for VMware(纯软件)配置现有容器注册表服务器。

本页面适用于设置、监控和管理技术基础设施的管理员、架构师和运维人员。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务

概览

您可以选择是否提供自己的容器注册表服务器。如果您不提供容器注册表服务器,Google Distributed Cloud 将从 Artifact Registry 中提取其容器映像。

Google Distributed Cloud 不支持不安全的容器注册表。启动容器注册表服务器时,您必须提供证书和密钥。证书可由公共证书授权机构 (CA) 签名,也可以自签名。

创建容器注册表服务器

如需了解如何创建容器注册表服务器,请参阅 Docker 文档中的运行可外部访问的注册表

配置注册表

如需使用私有容器注册表,请在创建集群时填写管理员集群配置文件中的 privateRegistry 部分。

验证映像是否是从注册表服务器中拉取的

验证映像是否从注册表服务器拉取的方式取决于您在创建管理员集群时是否启用了高级集群

  • 如果未启用高级集群,请运行以下命令:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \
        --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}"
    

    ADMIN_CLUSTER_KUBECONFIG 替换为管理员集群的 kubeconfig 文件的路径。

    此命令的输出会显示集群中的所有映像。您可以验证所有 Google Distributed Cloud 映像是否都来自您自己的注册库服务器。

  • 如果启用了高级集群,请执行以下步骤:

    您可以通过检查名为 config.toml 的文件的内容来确定 containerd 是否从本地注册表拉取映像,如以下步骤所示:

    1. 登录节点并检查 /etc/containerd/config.toml 文件的内容。
    2. 检查 config.toml 文件的 pluginsio.containerd.grpc.v1.cri".registry.mirrors 字段,查看您的注册表服务器是否列在 endpoint 字段中。

      以下代码摘自示例 config.toml 文件。

      version = 2
      root = "/var/lib/containerd"
      state = "/run/containerd"
      ...
      [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io"]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."privateregistry2.io".tls]
      ca_file = '/etc/containerd/certs.d/privateregistry2.io/ca.crt'
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
      endpoint = ["http://privateregistry.io", "http://privateregistry2.io"]
      ...
      
    3. 如果您的注册表镜像显示在 endpoint 字段中,则该节点会从注册表镜像中拉取映像,而不是从 Artifact Registry 中拉取映像。