注册表镜像
注册表镜像用于从 gcr.io
和 docker.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.io
和 docker.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
如果您不需要拉取操作的故障切换功能,则无需将 privateRegistryConfigPath
或 gcr.io
(以及 docker.io
)添加到代理允许列表中。
更新注册表镜像端点、证书和拉取凭据
如需更新注册表镜像端点、证书或拉取凭据,请执行以下操作:
在集群配置文件中,更新端点、CA 证书文件和拉取凭据配置文件路径。
通过运行以下命令来应用更改:
actl clusters baremetal update cluster admin --kubeconfig=ADMIN_KUBECONFIG