zoukankan      html  css  js  c++  java
  • 实现无密钥编排 转载:https://help.aliyun.com/document_detail/86562.html

     下面的看不懂的话,还可以看下官方文档:https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-service-account/

    =========

    Kubernetes集群支持使用私有镜像编排容器。首先需创建密钥用于编排容器,并且可实现无密钥编排。

    使用密钥编排容器

    1. 使用kubectl连接Kubernetes集群的Master节点,详情请参见通过kubectl连接Kubernetes集群
    2. 执行以下命令,创建拉取私有镜像的密钥。
       
      kubectl create secret docker-registry [$Reg_Secret] --docker-server=[$Registry] --docker-username=[$Username] --docker-password=[$Password] --docker-email=[$Email]
      说明:
      • [$Reg_Secret]为密钥的键名称,可自行定义。
      • [$Registry]为Docker仓库地址。
      • [$Username]为登录Docker仓库的用户名。
      • [$Password]为登录Docker仓库的密码。
      • [$Email]为邮件地址,该配置项可选填。
    3. 在编排的YAML文件中加入密钥相关配置项,完成后YAML文件类似如下。
       
      containers:
          - name: foo
            image: [$Registry]/abc/test:1.0
      imagePullSecrets:
          - name: [$Reg_Secret]
      说明:
      • imagePullSecrets 配置为在声明拉取镜像时指定的密钥。
      • 详情信息参见官方文档使用私有仓库

    实现无密钥编排

    为了避免每次使用私有镜像部署时,都需要引用密钥,您可将secret添加到namespace的default service account中,详情请参见Add ImagePullSecrets to a service account。本例中采用手动配置的方式,修改命名空间的默认服务账户default,从而将此secret作为imagePullSecret,具体步骤如下:

    1. 执行以下命令,查看之前创建的密钥。
       
      kubectl get secret [$Reg_Secret]
      系统显示类似如下。
       
      NAME          TYPE                             DATA      AGE
      [$Reg_Secret] kubernetes.io/dockerconfigjson   1         13m
    2. 依次执行以下命令,将服务账号default的配置导出到sa.yaml文件并查看该文件。
       
      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-uudge
    3. 编辑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-****-11e5-****-42010af0d7b6
      secrets:
      - name: default-token-uudge
      imagePullSecrets:                 ##增加该项
      - name: regsecret
    4. 执行以下命令,用sa.yaml配置文件更新default服务账号。
       
      kubectl replace serviceaccount default -f ./sa.yaml
      系统显示类似如下。
       
      serviceaccount "default" replaced
    5. 本文以编排tomcat为例,执行kubectl create -f命令创建Pod。该配置文件如下所示。
       
      apiVersion: apps/v1
      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]/abc/test:1.0
              ports:
              - containerPort: 8080
    6. 若配置正确,Pod会启动成功。执行如下命令,查看配置项。
       
      kubectl get pod tomcat-XXX -o yaml
      系统显示类似如下,确认无密钥编排成功。
       
      spec:
        imagePullSecrets:
        - nameregsecretey


  • 相关阅读:
    转:高并发场景下强一致预算/库存扣减方案
    转:Dubbo性能调优参数及原理
    转:java线程状态说明,Jstack线程状态BLOCKED/TIMED_WAITING/WAITING解释
    使用增强学习法之SQ3R主动阅读
    建立实用投资计划
    使用smarty方法实现目标
    主动学习
    小知识
    大脑的处理模式
    真正的随笔
  • 原文地址:https://www.cnblogs.com/testzcy/p/15430383.html
Copyright © 2011-2022 走看看