繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM