在 GKE 或 GCE 上运行的 Kubernetes 集群具有 native support for accessing the container registry,无需进一步配置。
正如您所提到的,您正在运行一个本地集群,您没有运行任何这些,并且只使用来自 GCP 的容器注册表,因此,虽然我没有机会对此进行测试(我没有在 Google Cloud 之外集群)该过程不应与 pulling an image from a private registry. 的过程不同
在您的情况下,您可以使用 gcr.io 注册表的身份验证凭据创建一个秘密,如下所示:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
your-registry-server 在这种情况下可能是 https://gcr.io/[your-project-id]
当您创建名为 regcred 的秘密后,您可以配置 pod 以使用它从注册表中提取所需的图像,添加 imagePullSecrets,如下所示:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: [The image you want to pull]
imagePullSecrets:
- name: regcred
然后你可以通过部署这个pod来测试一下镜像是否正确拉取:
kubectl create -f [your pod yaml]
等待创建 pod,然后使用 kubectl describe pod private-reg 描述 pod,并看到类似于以下内容的事件序列:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 4m default-scheduler Successfully assigned private-reg to gke-cluster-22-default-pool-e7830b6c-pxmt
Normal Pulling 4m kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt pulling image "gcr.io/XXX/XXX:latest"
Normal Pulled 3m kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt Successfully pulled image ""gcr.io/XXX/XXX:latest"
Normal Created 3m kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt Created container
Normal Started 3m kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt Started container