Kubectl无法从私有gcr.io存储库中提取docker映像

时间:2018-09-07 05:25:19

标签: docker google-cloud-platform google-kubernetes-engine google-container-registry

我在从私有GCR提取docker映像时遇到同样的问题,它会引发错误

Failed to pull image "gcr.io/{PROJECT_ID}/{IMAGE:TAG}:latest": rpc error: code = Unknown desc = Error response from daemon: repository gcr.io/{PROJECT_ID}/{IMAGE:TAG} not found: does not exist or no pull access

我尝试过但仍未解决问题的解决方案: 1.删​​除集群并重新创建 2.为用于拉取映像的服务帐户提供了Editor Editor Admin。

此外,当我使用服务帐户auth尝试docker image pull时,我能够将映像下载到本地

docker image pull gcr.io/{PROJECT_ID}/{IMAGE:TAG}

任何建议\可以帮助我丢失

谢谢

3 个答案:

答案 0 :(得分:0)

您是在本地计算机上运行kubectl命令吗?
如果是这样,您应该首先使用以下命令将kubectl上下文配置为GKE,
gcloud container clusters get-credentials my-cluster --zone=europe-west2-a

在此处阅读更多信息
https://cloud.google.com/sdk/gcloud/reference/container/clusters/get-credentials

在执行上述命令之前,您可能必须安装和配置Google Cloud SDK。 https://cloud.google.com/sdk/install
https://cloud.google.com/sdk/docs/initializing

答案 1 :(得分:0)

此问题主要是在使用默认服务帐户(无权从GCR提取图像)创建群集时提出的,因此,要解决此问题,我们可以尝试以下操作:

在创建集群时,我们需要将范围指定为云平台,以便集群中的节点可以获得从GCR提取图像的权限

gcloud container clusters create "test-cluster"   --zone "us-central1-a"   --machine-type "n1-standard-1"    --scopes https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/devstorage.read_write  --num-nodes "3"

我们可以在创建群集时分配一个服务帐户,该群集有权从Google Container注册表中提取图像:

*gcloud container clusters create "test-cluster" --zone "us-central1-a" --machine-type "n1-standard-1" --num-nodes "3" --service-account "XXXXXX@XXXXX.iam.gserviceaccount.com"*

致谢

答案 2 :(得分:0)

我建议确保在群集中设置适当的范围,以使服务帐户能够提取映像。 Here是一篇文章,逐步介绍了如何授予用户从注册表中提取图像的权限。