zoukankan      html  css  js  c++  java
  • kubernetes实战篇之为默认账户创建镜像拉取密钥

    系列目录

    上一节我们分别使用纯文本账户密码和docker的config文件一创建一个kubernetes secret对象,并且把它添加到containers的imagePullSecrets字段用以拉取私仓镜像.这一节我们讲解另一种方法:即把secret附加到default这个serviceaccount上,这样拉取镜像的时候就不需要每次都在yml文件里声明imagePullSecrets字段.

    至于为什么把镜像的拉取secret附加到default这个serviceaccont上就可以实现无密钥拉取,实际上这里涉及到了kubernetes的RBAC权限,本教程其它章节有介绍过,这里不再详细介绍.默认情况下,拉取镜像使用的是default这个账户,如果给这个账户添加了镜像拉取secret,则它会在拉取镜像时自动使用附加的secret,这样就不用在每个yml文件里都声明imagePullSecrets字段了.

    其实知道了原理,并且有了上一节的基础,做法也非常简单,只需要一行命令即可

    kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}'
    

    regcred是我们上一节生成的密钥.

    完了之后,大家可以自己验证一下,重新编排一个yml文件,拉取本地没有的镜像,可以看到,yml文件里没有声明imagePullSecrets,也同样可以拉取镜像.我的编排文件如下,非常简单,供大家参考

    apiVersion: v1
    kind: Pod
    metadata:
      name: testport
    spec:
      containers:
      - name: cat-hosts
        image: 192.168.124.43:8002/rancher/nginx-ingress-controller-defaultbackend:1.4
        imagePullPolicy: IfNotPresent
    

    使用修改yml的方式为default用户增加imagePullSecrets.

    上述操作虽然看似非常简单,却要求非常高,否则很容易出错,当然大家可以选择记住这个命令,然后类似的命令越来越多时,全部记起来显然不是一个好的办法,我们需要一种可行的操作方法.

    1. 把sa的编排文件导出到其它文件
    kubectl get serviceaccounts default -o yaml > ./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
    
    1. 我们编辑这个文件,增加一个imagePullSecrets字段,并把regcred赋给它,这样二者之间就建立了关联
    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: regcred
    
    1. 更新default这个账户
    kubectl replace serviceaccount default -f ./sa.yaml
    
  • 相关阅读:
    Druid 使用 Kafka 将数据载入到 Kafka
    Druid 使用 Kafka 数据加载教程——下载和启动 Kafka
    Druid 集群方式部署 —— 启动服务
    Druid 集群方式部署 —— 端口调整
    Druid 集群方式部署 —— 配置调整
    Druid 集群方式部署 —— 配置 Zookeeper 连接
    Druid 集群方式部署 —— 元数据和深度存储
    Druid 集群方式部署 —— 从独立服务器部署上合并到集群的硬件配置
    Druid 集群方式部署 —— 选择硬件
    Druid 独立服务器方式部署文档
  • 原文地址:https://www.cnblogs.com/tylerzhou/p/11113721.html
Copyright © 2011-2022 走看看