kubernetes imagePullSecrets认证拉取私仓

imagePullSecrets 官方文档

认证方式有两种不过官方推介使用第二种:
第一种(配置节点以对专用注册表进行身份验证)
第二种(在Pod上指定ImagePullSecrets)
在这里插入图片描述


部署方式第一种

在这里插入图片描述

一、创建登录认证:
docker login -uadmin  -pRoot123.  https://192.168.11.128:4430/harbor
-u   用户
-p   密码
二、查看是否生成文件
ls -al  $HOME/.docker/config.json

在这里插入图片描述

三、将生成的$HOME/.docker/config.json文件发给给集群机器
for n in `kubectl get  nodes  -o wide |awk '{print $6}' |grep -v INTERNAL-IP |xargs`;do scp ~/.docker/config.json root@$n:/var/lib/kubelet/config.json; done
四、测试

1)编写yaml文件进行测试

vim  tomcat.yaml
apiVersion: apps/v1
kind: Deployment                #控制器
metadata:
  name: jenkins-tomcat         #这个标签为启动pod时候的名字
spec:
  replicas: 1                  #启动副本数
  selector:                     #设置标签
    matchLabels:
      app: jenkins-tomcat          #这个标签相当于分组,查看(kubectl  get  pods  --show-labels)
  minReadySeconds: 5            #等待设置的时间后才进行升级,(如果没有设置该值,在某些极端情况下可能会造成服务不正常运行)
  revisionHistoryLimit: 2       #要保留以允许回滚的旧复制集数
  strategy:                     #策略
    type: RollingUpdate         #默认为滚动更新(可以不写)
    rollingUpdate:              #滚动更新
      maxSurge: 1               #升级过程中最多可以比原先设置多出的POD数量
      maxUnavailable: 1         #升级过程中最多有多少个POD处于无法提供服务的状态(该不为0)
  template:                     #模板(相当于定义好的一个python中的模块)
    metadata:
      labels:
        app: jenkins-tomcat         #这个标签需要selector定义的标签一个,划分在同一个组
    spec:
      containers:                       #模板(容器模板)
      - name: jenkins-tomcat        #node节点启动的容器名字(kind控制器名字+标签名)
        image: 192.168.11.128:4430/library/mogodb:20200303104829  #镜像名
        imagePullPolicy: Always  #拉取镜像(选择方式——直接使用本地拥有的镜像)
        ports:
          - containerPort: 80       #容器开放的监听端口
      restartPolicy: Always             #重新启动pod中所有容器的策略
---
apiVersion: v1
kind: Service
metadata:
  name: jenkins-tomcat
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 30110
  selector:
    app: jenkins-tomcat

2)、运行yaml文件
kubectl apply -f tomcat.yaml

pod运行失败提示镜像拉取不下来的提示信息将$HOME/.docker/config.json复制给其他node节点

 for n in `kubectl get  nodes  -o wide |awk '{print $6}' |grep -v INTERNAL-IP |xargs`;do scp ~/.docker/config.json root@$n:~/.docker/config.json; done

缺点: 如果增加一个节点需要将$HOME/.docker/config.json私仓发给给新增的节点,人工操作难免会有遗漏

部署方式第二种

一、使用Docker配置创建机密(jenkins名称空间添加认证)

样例:

secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

#默认名称空间为default 其他名称空间认证需要添加 --namespaces=名称空间

1)创建jenkins名称空间

kubectl create namespace   jenkins

2)创建Harbor的认证

kubectl create secret docker-registry  docek-harbor  --docker-server=https://192.168.11.128:4430  --docker-username=admin --docker-password=Root123. --docker-email=2216170040@qq.com  --namespace=jenkins
二、测试:

1)、编写yaml文件

vim tomcat.yaml
apiVersion: apps/v1
kind: Deployment                #控制器
metadata:
  name: jenkins-tomcat         #这个标签为启动pod时候的名字
  namespace: jenkins
spec:
  replicas: 1                  #启动副本数
  selector:                     #设置标签
    matchLabels:
      app: jenkins-tomcat          #这个标签相当于分组,查看(kubectl  get  pods  --show-labels)
  minReadySeconds: 5            #等待设置的时间后才进行升级,(如果没有设置该值,在某些极端情况下可能会造成服务不正常运行)
  revisionHistoryLimit: 2       #要保留以允许回滚的旧复制集数
  strategy:                     #策略
    type: RollingUpdate         #默认为滚动更新(可以不写)
    rollingUpdate:              #滚动更新
      maxSurge: 1               #升级过程中最多可以比原先设置多出的POD数量
      maxUnavailable: 1         #升级过程中最多有多少个POD处于无法提供服务的状态(该不为0)
  template:                     #模板(相当于定义好的一个python中的模块)
    metadata:
      labels:
        app: jenkins-tomcat         #这个标签需要selector定义的标签一个,划分在同一个组
    spec:
      containers:                       #模板(容器模板)
      - name: jenkins-tomcat        #node节点启动的容器名字(kind控制器名字+标签名)
        image: 192.168.11.128:4430/library/mogodb:20200303104829  #镜像名
        imagePullPolicy: Always  #拉取镜像(选择方式——直接使用本地拥有的镜像)
        ports:
          - containerPort: 80       #容器开放的监听端口
      imagePullSecrets:
      - name: docek-harbor
      restartPolicy: Always             #重新启动pod中所有容器的策略
---
apiVersion: v1
kind: Service
metadata:
  name: jenkins-tomcat
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 30110
  selector:
    app: jenkins-tomcat

2)运行yaml文件

kubectl apply  -f  tomcat.yaml 

3)可以查看正常运行

kubectl  get  po  -n  jenkins

在这里插入图片描述

4)查看详细信息

kubectl describe   pod -n  jenkins  jenkins-tomcat-68fb8884f9-vqs7l

在这里插入图片描述

更多查看官方网址

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值