主要寄给:google-cloud-platform
我要解决的总体问题是;从私有Kubernetes从Google Container Registry中提取图像。
更新刚刚添加了heptio-contour,如果那里有人遇到过这种情况-因为Heptio的好人已经进一步创建了问题中提到的脚本-谢谢。
第一步是只使用该服务帐户,用JSON关键-作为描述在这里。
但是当我跑步时:
cat gcr-sa-key.json | docker login -u _json_key --password-stdin https://gcr.io
我应该能够登录docker,但是失败了:
cat gcr-sa-key.json | docker login -u _json_key --password-stdin https://gcr.io
Error response from daemon: Get https://gcr.io/v2/: unauthorized: GCR login failed. You may have invalid credentials. To login successfully, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication
注意:我是gcr-sa-key.json
从运行此文件得到的-请记住,我总体上是在尝试从Kubernetes使用它。
我希望这是Google的问题,但是/并且如果我确实按照Heptio的文档中的说明运行,则会得到:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 50s default-scheduler Successfully assigned default/<image-name>-deployment-v1-844568c768-5b2rt to my-cluster-digitalocean-1-7781
Normal Pulling 37s (x2 over 48s) kubelet, my-cluster-digitalocean-1-7781 pulling image "gcr.io/<project-name><image-name>:v1"
Warning Failed 37s (x2 over 48s) kubelet, my-cluster-digitalocean-1-7781 Failed to pull image "gcr.io/<project-name>/<image-name>:v1": rpc error: code = Unknown desc = Error response from daemon: pull access denied for gcr.io/<project-name>/<image-name>, repository does not exist or may require 'docker login'
Warning Failed 37s (x2 over 48s) kubelet, my-cluster-digitalocean-1-7781 Error: ErrImagePull
Normal SandboxChanged 31s (x7 over 47s) kubelet, my-cluster-digitalocean-1-7781 Pod sandbox changed, it will be killed and re-created.
Normal BackOff 29s (x6 over 45s) kubelet, my-cluster-digitalocean-1-7781 Back-off pulling image "gcr.io/<project-name>/<image-name>:v1"
Warning Failed 29s (x6 over 45s) kubelet, my-cluster-digitalocean-1-7781 Error: ImagePullBackOff
只是信息。可能相关,我在github上看到了这个问题。
您缺少最重要的一点,您需要以某种方式授予Kubernetes的默认服务帐户(最简单的方法)以在提取映像的同时访问您的私有容器注册表的权限。您可以通过三个步骤执行此操作:
kubectl create secret docker-registry my-private-gcr-readonly \
--docker-server=gcr.io \
--docker-username=_json_key \
--docker-password="$(cat /usr/local/home/demo/414141.json)" \
[email protected]
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "my-private-gcr-readonly"}]}'
而已 !
PS。
您还可以查看本教程,该教程说明了从Kubernetes集群中访问Google容器注册表的两种方法(使用JSON密钥或访问令牌)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句