寫在前面
這篇http://m.itdecent.cn/p/a275fed0bb55
我們部署了一套harbor鏡像倉庫,作為用戶的私有鏡像倉庫,那么本篇就主要介紹kubernetes從私有鏡像倉庫拉取鏡像的方法。
- 提前拉取鏡像
- 在節(jié)點上配置對私有鏡像倉庫的認證
- POD上配置imageSecret
提前拉取鏡像
就是提前把鏡像docker pull 也好,docker load也好,現(xiàn)在節(jié)點上準備好,基本等于廢話。。。。
在節(jié)點上配置對私有鏡像倉庫的認證
第二個方法,在節(jié)點上配置對私有鏡像倉庫的認證,這個是說,我們執(zhí)行docker login {registry_ip} 這個命令,就是把登錄信息記錄到~/.docker/config.json這個文件中了,我們生成一次這個文件,然后把這個文件拷貝到所有節(jié)點上去,相當(dāng)于免密了。
{
"auths": {
"172.18.11.18": {
"auth": "YWRtaW46MTIzNDU2NzgK"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.06.1-ce (linux)"
}
}
如上,那個auth的內(nèi)容其實就是{}用戶名:密碼}然后base64一下。如此,在所有節(jié)點上就可以直接pull私有鏡像倉庫了
POD上配置imageSecret
第三種,也是最常用的一種,就是kubernetes支持一種image拉取的時候呢,傳入一個secret的認證信息,由kubernetes來完成驗證,從而拉取鏡像。
步驟也很簡單,首先我們先生成一個secret:
kubectl create secret docker-registry myregistrykey --docker-server=https://172.18.11.18 --docker-username=admin --docker-password=12345678 --docker-email=beiertiao@me.com
其中docker-registry為secret的類型
--docker-server、--docker-username、docker-password必填,email選填。
如此生成了一個secret(默認namespace為default),然后在pod中寫入一個imagePullSecret就好了。
...
spec:
template:
spec:
containers:
- imagePullSecrets
- name: myregistrykey
以上↑