zoukankan      html  css  js  c++  java
  • 04-创建kubeconfig认证文件

    本文档记录自己的学习历程!

    创建 kubeconfig 文件

    kubeletkube-proxy 等 Node 机器上的进程与 Master 机器的 kube-apiserver 进程通信时需要认证和授权;

    kubernetes 1.4 开始支持由 kube-apiserver 为客户端生成 TLS 证书的 TLS Bootstrapping 功能,这样就不需要为每个客户端生成证书了;该功能当前仅支持为 kubelet 生成证书;

    创建 TLS Bootstrapping Token

    Token auth file

    Token可以是任意的包涵128 bit的字符串,可以使用安全的随机数发生器生成

    export BOOTSTRAP_TOKEN=$(head -c 16 /dev/urandom | od -An -t x | tr -d ' ')
    cat > token.csv <<EOF
    ${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
    EOF
    

    后三行是一句,直接复制上面的脚本运行即可。

    将token.csv发到所有机器(Master 和 Node)的 /etc/kubernetes/ 目录。

    # cp token.csv /etc/kubernetes/
    # scp token.csv xxxx:/etc/kubernetes/
    

    创建 kubelet bootstrapping kubeconfig 文件

    # cd /etc/kubernetes
    # export KUBE_APISERVER="https://192.168.1.121:6443"
    # # 设置集群参数
    # kubectl config set-cluster kubernetes 
      --certificate-authority=/etc/kubernetes/ssl/ca.pem 
      --embed-certs=true 
      --server=${KUBE_APISERVER} 
      --kubeconfig=bootstrap.kubeconfig
    # # 设置客户端认证参数
    # kubectl config set-credentials kubelet-bootstrap 
      --token=${BOOTSTRAP_TOKEN} 
      --kubeconfig=bootstrap.kubeconfig
    # # 设置上下文参数
    # kubectl config set-context default 
      --cluster=kubernetes 
      --user=kubelet-bootstrap 
      --kubeconfig=bootstrap.kubeconfig
    # # 设置默认上下文
    # kubectl config use-context default --kubeconfig=bootstrap.kubeconfig
    
    • --embed-certstrue 时表示将 certificate-authority 证书写入到生成的 bootstrap.kubeconfig 文件中;
    • 设置客户端认证参数时没有指定秘钥和证书,后续由 kube-apiserver 自动生成;

    创建 kube-proxy kubeconfig 文件

    # export KUBE_APISERVER="https://192.168.1.121:6443"
    # # 设置集群参数
    # kubectl config set-cluster kubernetes 
      --certificate-authority=/etc/kubernetes/ssl/ca.pem 
      --embed-certs=true 
      --server=${KUBE_APISERVER} 
      --kubeconfig=kube-proxy.kubeconfig
    # # 设置客户端认证参数
    # kubectl config set-credentials kube-proxy 
      --client-certificate=/etc/kubernetes/ssl/kube-proxy.pem 
      --client-key=/etc/kubernetes/ssl/kube-proxy-key.pem 
      --embed-certs=true 
      --kubeconfig=kube-proxy.kubeconfig
    # # 设置上下文参数
    # kubectl config set-context default 
      --cluster=kubernetes 
      --user=kube-proxy 
      --kubeconfig=kube-proxy.kubeconfig
    3 # 设置默认上下文
    # kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig
    
    • 设置集群参数和客户端认证参数时 --embed-certs 都为 true,这会将 certificate-authorityclient-certificateclient-key 指向的证书文件内容写入到生成的 kube-proxy.kubeconfig 文件中;
    • kube-proxy.pem 证书中 CN 为 system:kube-proxykube-apiserver 预定义的 RoleBinding cluster-admin 将User system:kube-proxy 与 Role system:node-proxier 绑定,该 Role 授予了调用 kube-apiserver Proxy 相关 API 的权限;

    分发 kubeconfig 文件

    将两个 kubeconfig 文件分发到所有 Node 机器的 /etc/kubernetes/ 目录

    # cp bootstrap.kubeconfig kube-proxy.kubeconfig /etc/kubernetes/
    # scp bootstrap.kubeconfig kube-proxy.kubeconfig xxxx:/etc/kubernetes/
    
  • 相关阅读:
    The Quad
    将OrCAD Capture CIS的设计文件(.dsn)导入到PADS Logic VX.2.3
    OrCAD Capture CIS 16.6 将版本16.6的设计文件另存为版本16.2的设计文件
    Eclipse IDE 添加jar包到Java工程中
    PADS Logic VX.2.3 修改软件界面语言
    切换Allegro PCB Editor
    Allegro PCB Design GXL (legacy) 将brd文件另存为低版本文件
    Allegro PCB Design GXL (legacy) 设置自动保存brd文件
    Could not create an acl object: Role '16'
    windows 下apache开启FastCGI
  • 原文地址:https://www.cnblogs.com/guigujun/p/8366530.html
Copyright © 2011-2022 走看看