一般情況下,我們項目構建的鏡像統一會推送至私有倉庫,那么這里大家可以參考阿里雲的私有倉庫搭建教程。那么我們可以通過以下步驟拉取:
1.推送及拉取鏡像
1.1. 登錄阿里雲Docker Registry
$ sudo docker login --username=[用戶名] registry.cn-qingdao.aliyuncs.com
用於登錄的用戶名為阿里雲賬號全名,密碼為開通服務時設置的密碼。
您可以在產品控制台首頁修改登錄密碼。
1.2. 從Registry中拉取鏡像
$ sudo docker pull registry.cn-qingdao.aliyuncs.com/xxxx/test:[鏡像版本號]
1.3. 將鏡像推送到Registry
$ sudo docker login --username=xxx registry.cn-qingdao.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-qingdao.aliyuncs.com/niechen/test:[鏡像版本號]
$ sudo docker push registry.cn-qingdao.aliyuncs.com/niechen/test:[鏡像版本號]
請根據實際鏡像信息替換示例中的[ImageId]和[鏡像版本號]參數。
2. k8s拉取阿里雲的私有鏡像
2.1、 保存用戶名與密碼
kubectl create secret docker-registry registry-secret --docker-server=registry.cn-shenzhen.aliyuncs.com --docker-username=user-test --docker-password=xxxxxx --docker-email=xxx@xxx.com -n default
--docker-server: 倉庫地址
--docker-username: 倉庫登陸賬號
--docker-password: 倉庫登陸密碼
--docker-email: 郵件地址(選填)
-n 命名空間
此時我們運行kubectl describe secret
可以看到詳細的secret信息
2.2 、更改配置
在對應的rc或者deployment更改如下的配置:
spec:
serviceAccountName: test
imagePullSecrets:
- name: registry-secret
containers:
- name: test
image: registry.cn-shenzhen.aliyuncs.com/xxxx/test:latest
在 spec.imagePullSecrets[0].name
里指定剛才創建的secret