[补充]kubernetes pull私有镜像的时候出问题,导致 ImagePullBackOff
接上次文章的补充:https://blog.csdn.net/u013641234/article/details/887706471.检查问题所在Kubectl describe po pod-nameFailed create pod sandbox: rpc error: code = Unknown desc = failed pulling image ......
·
接上次文章的补充:
1.检查问题所在
Kubectl describe po pod-name
Failed create pod sandbox: rpc error: code = Unknown desc = failed pulling image ...
Error response from daemon: pull access denied for ...
repository does not exist or may require 'docker login'
这是因为没有正确配置导致pull权限所致
~/.docker/config.json 无效
这是一个坑,因为和docker swarm完全不同的是在yaml和helm 中pull镜像的时候完全不会去参考config.json这个文件
解决方案:
使用 imagePullSecrets(注意:这个也是看namespace的)
kubectl create secret docker-registry regcred \
--docker-server=harbor.shub.us/\
--docker-username=<your name> \
--docker-password=<your pword> \
--namespace=<your namespace>
有的时候创建了还是不行
即使创建了
secrets
、配置了
imagePullSecrets
,有时仍然无法
pull
镜像。 比如
Calico
的相关镜像,如果被同步到了本地一个私有Registry中,一般配置时无效的。
这是因为,
Calico
属于系统Network组件,
Namespace
是
kube-system
。 而一般创建的
secrets
,属于
default
。 通过以下命令可以查看特定
secrets
的详细信息。
# kubectl get secret regcred -o yaml
apiVersion: v1
data:
.dockerconfigjson: eyJhdXRocyI6eyJodHRwOi8vaGFyYm9yLnR1cmluZy1jaS5oaXNpbGljb24uY29tIjp7IlVzZXJuYW1lIjoiY2hyaXN0b3BoZXIiLCJQYXNzd29yZCI6IlFpZGRZYWZkQmF2YTYjIiwiRW1haWwiOiJ5MDA0NDU0ODBAbm90ZXNtYWlsLmh1YXdlaS5jb20ifX19
kind: Secret
metadata:
creationTimestamp: "2019-01-10T08:51:03Z"
name: regcred
<mark> namespace: default</mark>
resourceVersion: "100110"
selfLink: /api/v1/namespaces/default/secrets/regcred
uid: dc96580b-14b4-11e9-9f81-e435c87f8d90
type: kubernetes.io/dockerconfigjson
这边还会出现一个问题,就是每个文件中都要添加这个secret 才能正常的下载镜像,这个其实比较繁琐,利用patch 就可以解决这个问题。
kubectl patch serviceaccount fat -p '{"imagePullSecrets": [{"name": "regcred"}]}'
这个就相当于在fat这个命名空间下所有的pull 操作都会具备这个regcred这个账户的吗。
完全做到和docker login一样。
某些特例的场景例如calico的环境下就必须老老实实的去写imagePullSecrets.
对k8s系统镜像无效
系统镜像中,
kube-proxy
、
pause
是在所有Slave节点都需要使用的。 如果这些系统镜像被设为私有,则无法下载。 以上方法无效,原因不明。
所以,k8s系统镜像,即使同步到了本地Registry,也不要设为私有。
更多推荐
已为社区贡献3条内容
所有评论(0)