我在从私有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}
任何建议\可以帮助我丢失
谢谢
答案 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是一篇文章,逐步介绍了如何授予用户从注册表中提取图像的权限。