无法从kubernetes pod中的注册表问题中提取图像



我在将图像从工件注册表拉到kubernetes pod时遇到问题。

我已经在工件注册表中创建了存储库,并推送了带有标签的docker图像。

当我试图在kubernetes中部署映像时,我遇到了ErrImagePull问题。

我已尝试在下执行命令

gcloud describe pod {podname}

在事件中,我看到以下问题

Failed to pull image: rpc error: failed to resolve image: unexpected status: 403 Forbidden

使用默认服务帐户的群集pod。我尝试在gcp控制台中为默认服务帐户提供工件读取器权限。

但不起作用。有人能帮我吗?

提前谢谢。

第一步是验证附加到GKE的节点池的服务帐户-->https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform?_ga=2.108247426.-1476124671.1589389489

该服务帐户需要此角色-->工件注册表读取器角色/artifactregistry.Reader.

最后,验证deployment.yaml->

--image=LOCATION docker.pkg/dev/PROJECT-ID/REPOSTORY/image:TAG

首先在您的机器中设置gcloud CLI,并使用gcloud在GCP中对您的项目进行身份验证。

gcloud auth login 
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE 
gcloud auth activate-service-account <svc-accnt-email> --key-file=serviceaccount.json 
gcloud auth configure-docker 

当您尝试配置专用存储库时,需要在pod/部署中配置imagePullSecretGKE不使用服务帐户直接向GCR进行身份验证,您需要配置imagePullSecret

kubectl create secret docker-registry gcr-auth-secret --docker-server=https://gcr.io  --docker-username=oauth2accesstoken --docker-password=$(gcloud auth configure-docker) --docker-email=<service-account-email> --docker-server=us.gcr.io 

这将在默认命名空间中创建一个秘密。基于您的名称空间,您可以添加-n <namespace>来在您的名称中创建机密。您可以使用以下命令获得机密的值

kubectl get secret gcr-auth-secret -n <namespace> -o yaml

现在,您需要配置您的pod/deployment以使用此机密向GCE进行身份验证。你可以通过在你的yaml 中添加以下内容来做到这一点

containers:
- name: <cont_name>
image: <image>:<tag>
imagePullSecrets:
- name: gcr-auth-secret

相关内容

  • 没有找到相关文章

最新更新