Kubernetes Pod无法从容器注册表(gcp)中提取图像

Geo*_*rré 11 google-cloud-platform kubernetes google-kubernetes-engine google-container-registry google-iam

我想用一个存在于'eu.gcr.io'(相同项目)上的新映像来更新我在kubernetes上的部署,我之前已经做过。但是现在,吊舱无法拉动图像,因为它们无权这样做。这是我们在pod日志中得到的错误。

Failed to pull image "eu.gcr.io/my-gcp-project/my-image:v1.009": 
rpc error: code = Unknown desc = Error response from daemon: 
unauthorized: You don't have the needed permissions to perform this operation,
and you may have invalid credentials.
Run Code Online (Sandbox Code Playgroud)

群集上的服务帐户具有kubernetes adminstorage admin角色,这应该足够。但是,即使我制作了服务帐户项目编辑器(出于调试目的),它仍然不起作用(相同的错误)。

我也尝试过创建一个新的新集群(默认设置)并在那里应用我的部署,但是随后出现了完全相同的问题。

我不确定我可以尝试什么。

任何帮助或建议,我们将不胜感激。

编辑:

我只是发现我仍然可以拉出并部署旧映像。但是,我创建的每个新映像都不能被kubernetes容器所吸引。

how*_*wie 6

根据你的描述

我刚刚发现我仍然可以拉取和部署较旧的映像。但是我构建的每个新镜像都不能被 kubernetes pod 拉取。

我假设您可以通过命令拉取 docker 映像,但不能通过 kubectl。

docker pull eu.gcr.io/my-gcp-project/my-image:v1.009 
Run Code Online (Sandbox Code Playgroud)

所以参考这篇文章Using Google Container Registry with Kubernetes,通过docker pullkubectl拉取docker镜像的身份验证是不同的。

您是否向 GKE 提供了访问令牌?

kubectl create secret docker-registry gcr-access-token \
--docker-server=eu.gcr.io \
--docker-username=oauth2accesstoken \
--docker-password="$(gcloud auth print-access-token)" \
--docker-email=any@valid.email
Run Code Online (Sandbox Code Playgroud)