k8s使用阿里雲的私有鏡像倉庫

k8s使用阿里雲的私有鏡像倉庫html

若是從private register中拉取image:也能夠參考這個地址:
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentialsnode

一、在阿里雲的容器鏡像服務
安裝使用文檔見以下:
鏡像倉庫的建立:參考下邊的這些文檔
https://help.aliyun.com/document_detail/60997.html?spm=a2c4g.11186623.6.552.4ab711be5f17Ph
https://help.aliyun.com/document_detail/60743.html?spm=a2c4g.11186623.6.547.29635696tHx2sOdocker

二、private registries may require keys to read images from them. Credentials can be providerd in several ways!json

對於公司內部的項目,通常不建議放到公有開放的鏡像倉庫,通常會花錢購買docker的私有倉庫或者在本身的服務器上搭建私倉,可是無論怎麼樣,咱們要如何使k8s可以拉取下來私有倉庫的鏡像呢?服務器

a、在node上邊登錄阿里雲的私有倉庫,保證調度過來pod時能夠及時拉取到鏡像
docker login registry-vpc.cn-shenzhen.aliyuncs.com
zhangyan
123qweasdapp

若是此時認證失敗,請參考文檔:
https://help.aliyun.com/document_detail/60743.html?spm=a2c4g.11186623.6.547.29635696xo62rfide

以後咱們能夠在配置文件中查看登錄狀況
k8s使用阿里雲的私有鏡像倉庫
此時,咱們雖然在各node節點能夠docker pull命令拉取鏡像,可是沒法經過k8s建立pod方式拉取鏡像ui

下邊咱們介紹如何在k8s建立pod時拉取鏡像
三、須要在master上生成secret祕鑰
kubectl create secret docker-registry summerzhangregsecret --docker-server=registry-vpc.cn-shenzhen.aliyuncs.com --docker-username=zhangyan --docker-password=123qweasd --docker-email=15510684768@163.comthis

解釋:
summerzhangregsecret :指定祕鑰的鍵名稱,可自行定義
--docker-server :指定docker倉庫的地址
--docker-username :指定docker倉庫帳號
--docker-password :指定docker倉庫密碼
--docker-email: 指定docker郵件地址(選填)阿里雲

能夠在系統中查看一下最新的secret

k8s使用阿里雲的私有鏡像倉庫
注意:能夠看到當前除了默認的祕鑰,還有咱們剛纔生成的,另外須要注意的是,該祕鑰只能在對應的namespace中使用,也就是這裏使用的default,若是須要用到其餘namespace,好比:test,就須要在生成secret的時候指定namespace的參數: -n test

注意:參考官方

This needs to be done for each pod that is using a private registry.
However, setting of this field can be automated by setting the imagePullSecrets in a serviceAccount resource. Check Add ImagePullSecrets to a Service Account for detailed instructions.
You can use this in conjunction with a per-node .docker/config.json. The credentials will be merged. This approach will work on Google Kubernetes Engine.

建立sa
kubectl create sa summer

將ImagePullSecrets添加到sa
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "summerzhangregsecret"}]}'

能夠用kubectl get sa summer -o yaml來查看sa和secret是否綁定成功
k8s使用阿里雲的私有鏡像倉庫

四、在生成pod時的yaml文件中加入祕鑰參數。
k8s使用阿里雲的私有鏡像倉庫

注意或者能夠不新建立sa,把本身建立的secret綁定到serviceaccount 的default上也是能夠的,可是我這裏本身建立了sa,因此就須要在yaml文件中多一個sa的字段,要否則他就會去找default的sa.

參考官方文檔: https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials
https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account

注意:
若是以上都已經作完,在拉取鏡像的時候仍是報沒有docker login或者鏡像倉庫不存在,則看一下,生成的secret的用戶名密碼是否錯誤:
kubectl get secret summerzhangregsecret -o yaml
k8s使用阿里雲的私有鏡像倉庫

mkdir /secret
cd /secret
echo eyJhdXRocyI6eyJyZWdpc3RyeS12cGMuY24tc2hlbnpoZW4uYWxpeXVuY3MuY29tIjp7InVzZXJuYW1lIjoic3VtbWVyQGxhbnpodXhpbmciLCJwYXNzd29yZCI6IjEyM3F3ZWFzZCIsImVtYWlsIjoiMTU1MTA2ODQ3NjhAMTYzLmNvbSIsImF1dGgiOiJjM1Z0YldWeVFHeGhibnBvZFhocGJtYzZNVEl6Y1hkbFlYTmsifX19 > token
base64 -d token

k8s使用阿里雲的私有鏡像倉庫

比對上邊解析出的用戶名密碼和倉庫,看是不是正確的。若是不正確,請從新生成secret和從新綁定serviceaccount

相關文章
相關標籤/搜索