创建k8s 镜像仓库登录密钥

原标题:k8s使用私有镜像仓库的访问凭据配置

k8s创建私有仓库凭据有两种方式

1.使用kubectl命令创建secret

2.使用docker凭证作为k8s的凭据。文章来源地址https://www.yii666.com/blog/458024.html

1.使用kubectl命令创建secret

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

<name>:凭据名称地址:https://www.yii666.com/blog/458024.html

DOCKER_REGISTRY_SERVER:私有服务地址

DOCKER_USER:登录账号文章地址https://www.yii666.com/blog/458024.html

DOCKER_PASSWORD:密码来源地址:https://www.yii666.com/blog/458024.html文章来源地址:https://www.yii666.com/blog/458024.html

DOCKER_EMAIL:邮箱

 

2.使用docker凭证作为k8s的凭据。

1.首先登录私有服务

docker login -u admin -p 123456 192.168.0.76:81

2.查看auth文件内容并生成密钥

cat /root/.docker/config.json |base64 -w 0

3.创建secret.yaml文件

apiVersion: v1
kind: Secret
metadata:
  name: login
  namespace: test-tomcat2
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJwcmsaasdfWRhdGEuY29tOjM0NDMiOiB7CgkJCSJhdXRoIjogIllXUnRhVzQ2ZVdsa1lVQWpNakF5TXc9PSIKCQl9Cgl9Cn0=

4.在yaml文件中使用凭据

apiVersion: apps/v1
kind: Deployment                #绑定的是Deployment模板
metadata:    #元数据
  name: tomcat-deployment2               # deployment模板的名字
  namespace: test-tomcat5
  labels:                                          # 标签
    app: tomcat                             # app 名字,需要和后面的service.yaml 一致
spec:                                              # pod 的描述信息
  replicas: 1                                   # 开启两个pods
  selector:                                             #关联pod 选择器
    matchLabels:
      app: tomcat                               # 需要和app 一致
  template:
    metadata:
      labels:
        app: tomcat                             # 需要和app 名字一致
    spec:
      imagePullSecrets:  #提取私有仓库秘钥
      - name: test-tomcat3/login #指定命名空间中的秘钥仓库
      nodeSelector:
        node: master02 #指定节点运行
      volumes:                                  # 宿主机挂载目录
      - name: web-app-webapps     # 给需要挂载的宿主机路径起个名字
        hostPath:                                # 宿主机路径
          path: /home/yida/test/webapps      # 路径: 宿主机路径目录       
      - name: web-app-logs
        hostPath:
          path: /home/yida/test/logs
      containers:                                # 容器描述     
      - name: tomcat                     # 容器的名字
        image: private.yd-data.com/test/tomcat9:v1   # 要拉取的镜像地址
        resources:
          limits:
            memory: 2Gi
          requests:
            memory: 1Gi
        ports:                                  # 容器内部映射的端口号 
        - containerPort: 8080    #  容器内部映射的端口号
        volumeMounts:                   # 容器内部映射的目录路径
        - name: web-app-webapps  # 给需要映射的目录路径起个名字,名字要和上面的宿主机器的名字对应
          mountPath: /usr/local/tomcat/webapps  # 容器内部映射挂载的目录路径
        - name: web-app-logs
          mountPath: /usr/local/tomcat/logs

5.如果部署pod拉取镜像报这个错:Error from server (BadRequest): container "redis-con" in pod "redis-v1" is waiting to start: trying and failing to pull image

则需要将docker login后生成的/root/.docker/config.json文件复制到/var/lib/kubelet/config.json。然后在kubernetes上重新部署即可正常拉取镜像。
posted @ 2023-07-27 16:55  追梦$少年  阅读(607)  评论(0编辑  收藏  举报