Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes豆荚可以';t从容器注册表(gcp)中提取图像_Kubernetes_Google Cloud Platform_Google Kubernetes Engine_Google Container Registry_Google Iam - Fatal编程技术网

Kubernetes豆荚可以';t从容器注册表(gcp)中提取图像

Kubernetes豆荚可以';t从容器注册表(gcp)中提取图像,kubernetes,google-cloud-platform,google-kubernetes-engine,google-container-registry,google-iam,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,Google Container Registry,Google Iam,我想用“eu.gcr.io”(同一个项目)上的新映像更新我在kubernetes上的部署,我以前做过这个。但是现在,POD无法提取图像,因为它们无权这样做。这是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

我想用“eu.gcr.io”(同一个项目)上的新映像更新我在kubernetes上的部署,我以前做过这个。但是现在,POD无法提取图像,因为它们无权这样做。这是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.
群集上的服务帐户具有kubernetes adminstorage admin角色,这些角色应为。但是,即使我创建了服务帐户项目编辑器(为了调试),它仍然不起作用(相同的错误)

我还尝试创建一个新的集群(默认设置)并在那里应用我的部署,但后来我遇到了完全相同的问题

我不确定我还能尝试什么

非常感谢您的帮助或建议

编辑:


我刚刚发现我仍然可以提取和部署旧的映像。但是kubernetes吊舱无法提取我构建的每个新图像。

您需要创建docker注册表密码,并在吊舱定义中使用imagePullSecrets:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

kubectl创建秘密docker注册表regcred--docker服务器=--docker用户名=--docker密码=--docker电子邮件=
apiVersion:v1 种类:豆荚 元数据: 姓名:私人注册 规格: 容器: -名称:私有注册容器 图片: 你的秘密: -姓名:regcred
根据您的描述,有关更多信息,请参见此

我刚刚发现我仍然可以提取和部署旧的映像。但我创造的每一个新形象都不能被库伯内特斯的吊舱所吸引

我想您可以通过命令来提取docker图像,但不能使用kubectl

docker pull eu.gcr.io/my-gcp-project/my-image:v1.009 
因此,通过本文的参考,通过docker pullkubectl对pull 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

k8s集群中使用的服务帐户或用户无权访问gcr(google容器注册表)。为了允许访问,有两种方法,以便k8s节点可以从gcr中提取映像并部署POD

方法1:将容器注册表公开(不建议这样做)仅用于实验室或测试目的


方法2:将存储对象管理员或存储对象查看器角色添加到分配给k8s群集和节点的服务帐户。(推荐)

这应该不需要,因为我是从google容器注册表(在同一个gcp项目中)而不是从docker中提取图像。这在以前是行之有效的。但现在k8s吊舱是未经授权的。你可以推送图像,但不能向右拉?图像从我的本地系统生成,并添加到google容器注册表中(没有任何可见问题)。图像就在桶里。问题出在pods无法检索图像的地方。您是使用GKE还是自己创建kubernetes群集?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