k8s使用secret拉取私有仓库镜像
# 环境描述
harbor私有仓库地址:reg.lyndon.com
用户名密码:admin/xxxxx
# 1. 创建一个Secret来保存验证口令
kubectl create secret docker-registry docker-reg-sec --docker-server=reg.lyndon.com --docker-username=admin --docker-password=xxxxx --docker-email=lyndon59@163.com
1
- regsecret: 指定密钥的键名称, 可自行定义
- --docker-server: 指定docker仓库地址
- --docker-username: 指定docker仓库账号
- --docker-password: 指定docker仓库密码
- --docker-email: 指定邮件地址(选填)
# 2. 查看验证口令
kubectl get secret
NAME TYPE DATA AGE
docker-reg-sec kubernetes.io/dockerconfigjson 1 9s
1
2
3
2
3
可以看到当前除了默认的密钥,还有我们刚才生成的.。另外要注意的是,该密钥只能在对应namespace使用,也就是这里的default,如果需要用到其他namespace,比如说test,就需要在生成的时候指定参数 -n test
# 3. 创建Deployment来自私库的镜像
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-nginx-97
spec:
replicas: 2
template:
metadata:
labels:
run: my-nginx-97
spec:
imagePullSecrets: #imagePullSecrets 参数告诉 Kubernets 应该从名为 dockercfg-192 的 Secret 里获取验证口令
- name: docker-reg-sec
containers:
- name: my-nginx-97
image: reg.lyndon.com/base/nginx-lb:1.7.9
ports:
- containerPort: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
其中imagePullSecrets是声明拉取镜像时需要指定密钥, regsecret 必须和上面生成密钥的键名一致, 另外检查一下pod和密钥是否在同一个namespace, 之后k8s便可以拉取镜像
# 4. 扩展
删除验证口令secret
kubectl delete secret docker-reg-sec
上次更新: 2022/10/05, 02:02:36