[英]Cannot pull image from registry issue in 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 节点池的 Service Account --> https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform?_ga=2.108247426。 -1476124671.1589389489
该服务帐户需要此角色 --> Artifact Registry Reader roles/artifactregistry.reader。
最后,验证部署中镜像的 url.yaml -->
--image=LOCATION-docker.pkg.dev/PROJECT-ID/REPOSITORY/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/deployment 中配置一个imagePullSecret 。 GKE不直接使用 service account 对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>
以在您的命名空间中创建秘密。 您可以使用以下命令获取 secret 的值
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.