本地kubeadm K8S访问私有gcr.io
Local kubeadm K8S access to private gcr.io
我已经用 kubeadm
和 docker 18.09.4
安装了 K8S,它工作正常。然后我安装了 gcloud
、运行 gcloud init
和 select 我的项目,其中 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 页上的所有说明,其中 none 成功了。
您是否知道 kubelet 1.14
和 docker 18.09.5
有任何问题? kubelet
不应该依赖底层的 CRI
(这里是 docker
)吗?您是否知道可能导致该问题的原因?
@VasilyAngapov 是真的。
我遵循了此处提供的技巧 https://container-solutions.com/using-google-container-registry-with-kubernetes/ 并且效果非常好(将访问令牌与 oauth2accesstoken
一起使用)
非常感谢。
我已经用 kubeadm
和 docker 18.09.4
安装了 K8S,它工作正常。然后我安装了 gcloud
、运行 gcloud init
和 select 我的项目,其中 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 页上的所有说明,其中 none 成功了。
您是否知道 kubelet 1.14
和 docker 18.09.5
有任何问题? kubelet
不应该依赖底层的 CRI
(这里是 docker
)吗?您是否知道可能导致该问题的原因?
@VasilyAngapov 是真的。
我遵循了此处提供的技巧 https://container-solutions.com/using-google-container-registry-with-kubernetes/ 并且效果非常好(将访问令牌与 oauth2accesstoken
一起使用)
非常感谢。