zoukankan      html  css  js  c++  java
  • k8s-harbor拉取镜像权限问题-imagePullSecrets

    k8s的imagePullSecrets如何生成及使用

    一、概述

    公司的docker仓库(harbor),是私有的,需要用户认证之后,才能拉取镜像。

    二、生成secret

    登录到k8s master节点,先登录docker

    root@k8s-master:~# docker login 192.168.10.122 -u admin -p Harbor12345
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    Error response from daemon: Get https://192.168.10.122/v2/: dial tcp 192.168.10.122:443: connect: connection refused

    注意:出现这个报错,是由于harbor为了安全性考虑,默认是需要https证书支持的

    但是我们可以通过一个简单的办法解决

    修改 /etc/docker/daemon.json 文件

    vim /etc/docker/daemon.json

    内容如下:

    {"insecure-registries": ["192.168.10.122"]}

    重新加载docker配置

    systemctl daemon-reload
    systemctl restart docker

    再次登录

    root@k8s-master:~# docker login 192.168.10.122 -u admin -p Harbor12345
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded

    提示登录成功。

    登录过程创建或更新一个包含授权令牌的config.json文件。
    查看config.json文件:

    cat ~/.docker/config.json

    输出包含类似以下内容的部分:

    {
        "auths": {
            "192.168.10.122": {
                "auth": "YWRtaW46SGFyYm9yMTIzNDU="
            }
        }
    
    }

    注意:如果您使用Docker凭据存储,您将看不到该auth条目,而是看到一个以存储名称为值的credsstore条目。

    基于现有Docker凭据创建secret

    kubectl create secret generic harborsecret 
        --from-file=.dockerconfigjson=/root/.docker/config.json 
        --type=kubernetes.io/dockerconfigjson

    注意:主要修改红色部分。

    harborsecret 表示key名

    /root/.docker/config.json 表示docker认证文件,注意要写绝对路径

    查看内容

    kubectl get secrets harborsecret --output="jsonpath={.data..dockerconfigjson}" | base64 -d

    输出:

    {
        "auths": {
            "192.168.10.122": {
                "auth": "YWRtaW46SGFyYm9yMTIzNDU="
            }
        }
    }

    在具体的Pod中引用就行:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: iot-nignx
      namespace: iot
    spec:
      selector:
        matchLabels:
          app: iot-nignx
      replicas: 1
      template:
        metadata:
          labels:
            app: iot-nignx
        spec:
          containers:
          - name: iot-nignx
            imagePullPolicy: Always
            image: 192.168.2.11:30013/iot/nginx_iot:202109071808
            ports:
            - containerPort: 80
              name: iot-nignx
            - containerPort: 4949
              name: iot-nginx-scada
          imagePullSecrets:
          - name: harborsecret
  • 相关阅读:
    算法描述》关于LIS的nlogn方法
    简单tarjan》一道裸题(BZOJ1051)(easy)
    值得一做》关于数学与递推 BZOJ1002 (BZOJ第一页计划)(normal+)
    值得一做》关于一道DP+SPFA的题 BZOJ1003 (BZOJ第一页计划) (normal-)
    图论算法》关于最大流转最短路两三事
    刷题向》图论》BZOJ1001 平面图最大流、平面图最小割、单源最短路(easy+)
    c++中结构体的使用
    c++的标准流入流出和使用例子
    小知识 ——引用
    小知识——关于数组指针和指针数组
  • 原文地址:https://www.cnblogs.com/fuyuteng/p/15242621.html
Copyright © 2011-2022 走看看