配置注册表镜像

注册表镜像

注册表镜像用于从 gcr.iodocker.io 镜像映像。例如,如果您尝试拉取映像 gcr.io/kubernetes-e2e-test-images/nautilus:1.0,则只有当注册表服务在完全相同的路径(例如 172.18.0.20:5000/kubernetes-e2e-test-images/nautilus:1.0)中具有该映像时,此操作才有效。所有非 gcr.io 映像仍可正常使用,例如,您仍然可以拉取 k8s.gcr.io/pause:3.1

使用注册表镜像可节省流量,并在您需要将集群从 gcr.io 服务中断环境隔离出来时提供使用 gcr.io 的替代方案。您还可以自行执行漏洞扫描。

准备工作

  • 您必须在网络中设置容器注册表服务器。
  • 如果您的注册表服务器运行专用 TLS 证书,则您必须拥有证书授权机构 (CA) 文件。
  • 如果您的注册表服务器需要身份验证,则您必须具有适当的登录凭据或 Docker 配置文件。

将容器映像上传到您的注册表服务器

通过运行以下命令将映像软件包中的映像上传到您的注册表服务器:

actl images push \
    --private-registry=PRIVATE_REGISTRY \
    --images ~/anthos-baremetal-private-mode

请替换以下内容:

  • PRIVATE_REGISTRY 替换为私有注册表地址(和端口)和子项目(例如 172.18.0.20:5000/test-namespace)。

  • 出现提示时,输入您的用户名和密码,或选择 Docker 配置文件。如果您的注册表服务器不需要凭据,请指定 --no-registry-credential

如需详细了解 actl images push 命令,请运行以下命令:

actl images push --help

使用您自己的命名空间

如果您想要在注册表服务器中使用您自己的命名空间(而非根命名空间),则可在 registryMirrors.endpoint 中提供您的私有注册表的 API 端点,以便系统可以从此子命名空间拉取 containerd。端点通常采用 <REGISTRY_IP:PORT>/v2/<NAMESPACE> 格式。请参阅私有注册表的用户指南,以了解特定详细信息。

例如,如果您只拥有 172.18.0.20:5000/test-namespace/ 的访问权限,则可以使用以下命令上传命名空间 test-namespace 下的所有映像:

actl images push \
    --images= ~/anthos-baremetal-private-mode \
    --private-registry=172.18.0.20:5000/test-namespace

然后,您可以在集群 YAML 文件中输入以下内容,以从子命名空间拉取 containerd

registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace

从注册表镜像创建集群

以下示例集群配置文件将使用您自己的注册表镜像服务器(而不是使用 gcr.io)。

如果您的注册表不需要专用 TLS 证书,则可以将 caCertPath 字段留空。

如果您的注册表服务器不需要身份验证 Docker 配置文件,则可以将 pullCredentialConfigPath 字段留空。

如需详细了解集群配置,请参阅集群配置

# Sample cluster config with registry mirror:
---
sshPrivateKeyPath: /root/ssh-key/id_rsa
registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: admin
  namespace: cluster-admin
spec:
  nodeConfig:
    containerRuntime: containerd
...

此集群中的所有节点都将使用此注册表镜像 172.18.0.20:5000(而不是使用 gcr.iodocker.io)。

故障切换到 gcr.io

如果无法从注册表镜像拉取您的集群,它将自动故障切换到 gcr.io。因此,我们建议在集群配置文件中提供 privateRegistryConfigPath 的值。如果未提供该值,则在注册表镜像失败的情况下,将无法从 gcr.io 拉取您的集群。

# Sample cluster config with registry mirror:
---
privateRegistryConfigPath: /root/.docker/config.json
registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json

如果您不需要拉取操作的故障切换功能,则无需将 privateRegistryConfigPathgcr.io(以及 docker.io)添加到代理允许列表中。

更新注册表镜像端点、证书和拉取凭据

如需更新注册表镜像端点、证书或拉取凭据,请执行以下操作:

  1. 在集群配置文件中,更新端点、CA 证书文件和拉取凭据配置文件路径。

  2. 通过运行以下命令来应用更改:

    actl clusters baremetal update cluster admin --kubeconfig=ADMIN_KUBECONFIG
    

后续步骤