【发布时间】:2019-09-18 05:40:48
【问题描述】:
我已经用kubeadm 和docker 18.09.4 安装了K8S,它工作正常。然后我安装了gcloud,运行gcloud init并选择我的项目,其中gcr被激活,继续gcloud components install kubectl docker-credentials-gcr,然后是docker-credentials-gcr configure-docker。
在那个阶段,docker 可以从我自己的gcr 注册表中提取图像,而kubelet 不能。
基本上,如果我运行docker run --rm --name hello gcr.io/own-gcr/hello-world,它会从注册表中提取图像并启动容器。
如果我从本地注册表中删除图像并运行 `` 失败并显示以下描述:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 23s default-scheduler Successfully assigned default/node-hello-6b99957775-9dvvw to lfr025922-docker
Normal BackOff 20s (x2 over 21s) kubelet, lfr025922-docker Back-off pulling image "gcr.io/own-gcr/node-hello"
Warning Failed 20s (x2 over 21s) kubelet, lfr025922-docker Error: ImagePullBackOff
Normal Pulling 9s (x2 over 22s) kubelet, lfr025922-docker Pulling image "gcr.io/own-gcr/node-hello"
Warning Failed 9s (x2 over 21s) kubelet, lfr025922-docker Failed to pull image "gcr.io/own-gcr/node-hello": 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. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication
Warning Failed 9s (x2 over 21s) kubelet, lfr025922-docker Error: ErrImagePull
当然,我遵循了https://cloud.google.com/container-registry/docs/advanced-authentication 页上的所有说明,但没有一个成功。
您知道kubelet 1.14 和docker 18.09.5 的任何问题吗? kubelet 不应该依赖底层的CRI(这里是docker)吗?您是否知道可能导致该问题的原因?
【问题讨论】:
-
你试过“gcloud auth configure-docker”吗?
-
是的,我做到了。对于那个很抱歉。在我上面的清单中忘记了这一步。而且在运行此命令之前和之后我的行为完全相同,这将我的 ~/.docker/config.json 文件从
{ "credHelpers": { "gcr.io": "gcr", "us.gcr.io": "gcr", "asia.gcr.io": "gcr", "staging-k8s.gcr.io": "gcr", "eu.gcr.io": "gcr" } }更改为{ "credHelpers": { "gcr.io": "gcloud", "us.gcr.io": "gcloud", "eu.gcr.io": "gcloud", "asia.gcr.io": "gcloud", "staging-k8s.gcr.io": "gcloud", "marketplace.gcr.io": "gcloud" } } -
我怀疑 kubelet 可以使用现有的 Docker 凭据,前提是它们按原样发布,而不需要任何帮助工具。
-
谢谢@VasilyAngapov。当您弹出评论时,我正在阅读该页面。这是个好地方。非常感谢。
标签: docker kubernetes google-cloud-platform kubectl kubelet