• k8s 如何支持私有镜像


    k8s如何支持私有镜像

    实现无密钥编排

    kubectl create secret docker-registry regsecret --docker-server=registry.cn-shenzhen.aliyuncs.com --docker-username=abc@aliyun.com --docker-password=xxxxxx --docker-email=abc@aliyun.com
    

    --docker-server 参数为私有镜像地址,阿里云地址详解:

    公网:registry.cn-shenzhen.aliyuncs.com
    
    vpc网:registry-vpc.cn-shenzhen.aliyuncs.com
    
    经典网:registry-internal.cn-shenzhen.aliyuncs.com
    

    其中:

    regsecret: 指定密钥的键名称,可自行定义。

    —docker-server:指定 Docker 仓库地址。
    —docker-username: 指定 Docker 仓库用户名。
    —docker-password:指定 Docker 仓库登录密码。
    —docker-email:指定邮件地址(选填)。
    

    yml 文件加入密钥参数。

    containers:
        - name: foo
          image: registry-internal.cn-hangzhou.aliyuncs.com/abc/test:1.0
    imagePullSecrets:
        - name: regsecret
    

    其中:

    imagePullSecrets 是声明拉取镜像时需要指定密钥。
    regsecret 必须和上面生成密钥的键名一致。
    image 中的 Docker 仓库名称必须和 --docker-server 中的 Docker 仓库名一致。
    详情信息参见官方文档 使用私有仓库。

    实现无密钥编排
    为了避免每次使用私有镜像部署时,都需要引用密钥,您可将secret添加到namespace的default serviceaccount中,参见Add ImagePullSecrets to a service account。

    首先找到前面创建的拉取私有镜像的secret。

    # kubectl get secret regsecret
    
    NAME        TYPE                             DATA      AGE
    regsecret   kubernetes.io/dockerconfigjson   1         13m
    

    本例中采用手动配置的方式,修改命名空间的默认服务帐户default,从而将此secret作为imagePullSecret。
    首先创建一个sa.yaml配置文件,将服务账号default的配置导入到该文件中。

    • kubectl get serviceaccounts default -o yaml > ./sa.yaml
      
      cat  sa.yaml
      
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        creationTimestamp: 2015-08-07T22:02:39Z
        name: default
        namespace: default
        resourceVersion: "243024"             ##注意该项
        selfLink: /api/v1/namespaces/default/serviceaccounts/default
        uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
      secrets:
      
      - name: default-token-uudgeoken-uudge
      

      执行vim sa.yaml命令,删除resourceVersion,并增加拉取镜像的密钥配置项imagePullSecrets。修改后的配置如下。

    • apiVersion: v1
      kind: ServiceAccount
      metadata:
        creationTimestamp: 2015-08-07T22:02:39Z
        name: default
        namespace: default
        selfLink: /api/v1/namespaces/default/serviceaccounts/default
        uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
      secrets:
      
      - name: default-token-uudge
        imagePullSecrets:                 ##增加该项
      - name: regsecret
      

    随后用 sa.yaml配置文件替换default的服务账号配置。
    kubectl replace serviceaccount default -f ./sa.yaml
    serviceaccount "default" replaced
    以一个tomcat编排为例,执行kubectl create -f 命令创建。

    apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: tomcat-deployment
      labels:
        app: tomcat
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: tomcat
      template:
        metadata:
          labels:
            app: tomcat
        spec:
          containers:
          - name: tomcat
            image: registry-internal.cn-hangzhou.aliyuncs.com/abc/test:1.0              #替换为您自己的私有镜像地址
            ports:
            - containerPort: 8080
    

    若配置正常,Pod会启动成功。然后执行 kubectl get pod tomcat-xxx -o yaml命令,你可看到以下配置项。

    spec:
      imagePullSecrets:
    
    - nameregsecretey
    
  • 相关阅读:
    用索引提高SQL Server性能
    常用代码生成器
    ASP.NET动态生成html页面 (转载)
    C#基础知识
    DrGraph软件升级:工程优化1
    DrGraph软件升级:Quick Access Toolbar
    高级面向对象程序与设计的概念
    DrGraph软件升级:BCB6转2010
    DrGraph软件升级:皮肤
    命名空间
  • 原文地址:https://www.cnblogs.com/h-gallop/p/11708602.html
Copyright © 2020-2023  润新知