kubelet 在 kubernetes v1.7.x版本能pull images 在 kubernetes v1.11.x的kubelet不能pull images的原因記錄
阿新 • • 發佈:2018-12-11
本文比較的kubernetes版本是 v1.7.6 v1.11.2 系統
[[email protected] ~]# uname -a
Linux master-47-35 3.10.0-327.4.5.el7.x86_64 #1 SMP Mon Jan 25 22:07:14 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
kuberlet 的資料目錄均為/var/lib/kubelet/
v1.7.6
ls -l /var/lib/kubelet/ total 8 lrwxrwxrwx 1 root root 20 Dec 18 2017 config -> /root/.docker/config lrwxrwxrwx 1 root root 25 Nov 29 2017 config.json -> /root/.docker/config.json drwxr-x--- 3 root root 4096 Nov 30 2017 plugins drwxr-x--- 12 root root 4096 Sep 19 15:56 pods
可以看出kubelet 把docker的登入資訊ls 過來了,所以只要用docker registry 的admin使用者 docker login之後就可以拉取docker registry上所有的映象
然而v1.11.2 確不是這樣子的
v1.11.2
[[email protected] ~]# ls -l /var/lib/kubelet/ total 20 -rw-r--r-- 1 root root 40 Aug 24 12:54 cpu_manager_state drwxr-xr-x 2 root root 4096 Sep 18 15:05 device-plugins drwx------ 2 root root 4096 Aug 24 12:56 plugin-containers drwxr-x--- 4 root root 4096 Sep 11 17:19 plugins drwxr-x--- 17 root root 4096 Sep 18 15:05 pods
所以用docker registry 的admin使用者 docker login之後也不可以拉取docker registry上所有的映象,
解決的辦法 需要在相關的物件加上imagePullSecrets:- name: registrysecret-admin
,
然後在所有的空間加上secret
,secret的內容 以及格式為
[[email protected] ~]# kubectl get secret -n qinzhao registrysecret-admin -oyaml apiVersion: v1 data: .dockercfg: base64 admin adminpassword kind: Secret metadata: creationTimestamp: 2018-09-04T13:31:02Z name: registrysecret-admin namespace: kube-system type: kubernetes.io/dockercfg
相關的kubernetes程式碼 k8s.io/kubernetes/vendor/k8s.io/api/core/v1/types.go
本文只是提供參考,請各位根據自己的環境具體分析