美文网首页
手动构筑单机版K8s(四)创建kubeconfig文件

手动构筑单机版K8s(四)创建kubeconfig文件

作者: 贪得_3440 | 来源:发表于2021-07-01 11:48 被阅读0次

    4.创建kubeconfig文件

    创建 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 文件,确认其中的 ${BOOTSTRAP_TOKEN} 环境变量已经被真实的值替换。

    [root@k8s bin]# cat token.csv
    ae0c33dd85041f221e95ecfe74623d89,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
    

    BOOTSTRAP_TOKEN 将被写入到 kube-apiserver 使用的 token.csv 文件和 kubelet 使用的 bootstrap.kubeconfig 文件,如果后续重新生成了 BOOTSTRAP_TOKEN,则需要:

    • 更新 token.csv 文件,分发到所有机器 (master 和 node)的 /etc/kubernetes/ 目录下,分发到node节点上非必需;
    • 重新生成 bootstrap.kubeconfig 文件,分发到所有 node 机器的 /etc/kubernetes/ 目录下;
    • 重启 kube-apiserver 和 kubelet 进程;
    • 重新 approve kubelet 的 csr 请求;

    token.csv移动至/etc/kubernetes/

    cp token.csv /etc/kubernetes/
    

    创建 kubelet bootstrapping kubeconfig 文件

    cd /etc/kubernetes
    export KUBE_APISERVER="https://127.0.0.1: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-certs 为 true 时表示将 certificate-authority 证书写入到生成的 bootstrap.kubeconfig 文件中;
    • 设置客户端认证参数时没有指定秘钥和证书,后续由 kube-apiserver 自动生成;

    创建 kube-proxy kubeconfig 文件

    export KUBE_APISERVER="https://127.0.0.1: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
    
    # 设置默认上下文
    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 的权限;

    安装步骤

    1. 事前准备
    2. 创建TLS证书和秘钥
    3. 安装kubectl命令行工具
    4. 创建kubeconfig文件
    5. 创建高可用etcd集群
    6. 部署master节点
    7. 部署node节点
    8. 全局验证

    相关文章

      网友评论

          本文标题:手动构筑单机版K8s(四)创建kubeconfig文件

          本文链接:https://www.haomeiwen.com/subject/nqwrultx.html