k8s配置secret拉取私有仓库镜像

在使用私有镜像时,需要创建一个docker registry secret,并在容器中引用.如何让k8s能够拉取私有仓库的镜像
 
1. 登录docker镜像仓库
这里以阿里云docker镜像仓库为例
docker login --username=xxx@aliyun.com registry.cn-hangzhou.aliyuncs.com
之后输入密码就可以了, 这个时候我们可以在配置文件中查看登录情况

cat ~/.docker/config.json
这个时候我们虽然可以通过docker pull命令拉取镜像, 但无法通过k8s创建pod方式拉取
2. 生成密钥secret

[root@k8s-master yaml]# kubectl create secret -h #查看创建secret帮助
kubectl create secret docker-registry regsecret \
--namespace=regress \
--docker-server=registry.cn-hangzhou.aliyuncs.com \
--docker-username=xxx@aliyucom \
--docker-password=xxxxxx \
--docker-email=xx@aliyun.com
其中:
  • regsecret: secret名字。指定密钥的键名称, 可自行定义
  • --docker-server: 指定docker私有仓库地址
  • --docker-username: 指定docker私有仓库用户名
  • --docker-password: 指定docker私有仓库密码
  • --docker-email: 指定邮件地址(可选)
  • --namespace:指定命名空间(可选)

查看secret:
kubectl get secret
kubectl get secret regsecret -n regress -o yaml
可以看到当前除了默认的密钥, 还有我们刚才生成的. 另外要注意的是, 该密钥只能在对应namespace使用, 也就是这里的default, 如果需要用到其他namespace, 比如说regress, 就需要在生成的时候指定参数 -n regress

 
3. yml文件加入密钥参数

---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: basic-server-delpoy
  namespace: regress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: basic-server
  template:
    metadata:
      labels: 
        app: basic-server
    spec:
      imagePullSecrets:
      - name: ali-registry 
      containers:
      - name: basic-server
        image: registry-vpc.cn-hangzhou.aliyuncs.com/allenjol/basic-server:20190425131211
        ports:
        - name: server-port
          containerPort: 11010
#加入密钥参数如下
imagePullSecrets:
- name: regsecret
其中imagePullSecrets是声明拉取镜像时需要指定密钥, regsecret 必须和上面生成密钥的键名一致, 另外检查一下pod和密钥是否在同一个namespace, 之后k8s便可以拉取镜像

 
 

版权声明:
作者:allenjol
链接:https://www.ayunw.cn/archives/483
来源:爱生活,爱运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>