本文內容
在K8s中使用需認證的私服倉庫需要導入認證信息到集群中,常規導入方式有兩種:
- 使用Docker已登錄的倉庫密文導入
- 使用命令行創建Secret對象導入
本文介紹的就是以上兩種方法。
使用Docker已登錄的倉庫密文導入
1、docker login登錄私服倉庫,輸入賬號密碼
docker login <私服倉庫地址>
2、登錄成功后,檢查是否生成 docker 認證配置文件(生成在當前登錄用戶家的.docker目錄下)
cat ~/.docker/config.json
3、通過 ~/.docker/config.json
創建Secret對象導入集群
kubectl create secret generic <secret-name> \
--from-file=.dockerconfigjson=~/.docker/config.json \
--type=kubernetes.io/dockerconfigjson
- secret-name:k8s Secret的名稱標識字段
還有更復雜的方式,請參考官方文檔
使用命令行創建Secret對象導入
替換參數並執行
kubectl create secret docker-registry <secret-name> --docker-server=<your-registry-server> --docker-username=<docker-username> --docker-password=<docker-password> --docker-email=<your-email>
- secret-name:k8s Secret的名稱標識字段
- your-registry-server:私服docker倉庫地址
- docker-username:docker登錄用戶
- docker-password:docker密碼
- your-email:郵件地址
查看Secret創建情況
kubectl get secret
使用集群中的Secret拉取鏡像
以Pod模板舉例:
test-private-registry.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-private-registry
spec:
containers:
- name: private-reg-container
image: <your-registry-server>/tomcat:8.5.34-alpine
imagePullSecrets:
- name: <secret-name>
注意:在spec中指定imagePullSecrets的name為之前Secret的名稱即可
kubectl apply -f test-private-registry.yaml