• k8s v1.9.9 二进制部署高可用(3)部署kubectl命令行工具


    kubectl 是 kubernetes 集群的命令行管理工具,本文档介绍安装和配置它的步骤。

    注意:
    1、如果没有特殊指明,本文档的所有操作均在10.0.0.10节点上执行;
    2、本文档只需要部署一次,生成的 kubeconfig 文件是通用的,可以拷贝到需要执行 kubectl 命令的机器的 ~/.kube/config 位置;

    下载和分发 kubectl 二进制文件

    cd /root/work
    wget https://dl.k8s.io/v1.9.9/kubernetes-server-linux-amd64.tar.gz
    tar zxvf kubernetes-server-linux-amd64.tar.gz
    #分发到需要使用 kubectl 的master节点:
    cp kubernetes/server/bin/kubectl /usr/bin
    scp kubernetes/server/bin/kubectl root@10.0.0.11:/usr/bin
    scp kubernetes/server/bin/kubectl root@10.0.0.12:/usr/bin
    

    创建 admin 证书和私钥

    kubectl 与 apiserver https 安全端口通信,apiserver 对提供的证书进行认证和授权。
    kubectl 作为集群的管理工具,需要被授予最高权限。这里创建具有最高权限的 admin 证书。

    创建证书签名请求:

    cat > admin-csr.json <<EOF
    {
      "CN": "admin",
      "hosts": [],
      "key": {
        "algo": "rsa",
        "size": 2048
      },
      "names": [
        {
          "C": "CN",
          "ST": "BeiJing",
          "L": "BeiJing",
          "O": "system:masters",
          "OU": "4Paradigm"
        }
      ]
    }
    EOF
    

    -O 为 system:masters,kube-apiserver 收到该证书后将请求的 Group 设置为 system:masters;
    -预定义的 ClusterRoleBinding cluster-admin 将 Group system:masters 与 Role cluster-admin 绑定,该 Role 授予所有 API的权限;
    -该证书只会被 kubectl 当做 client 证书使用,所以 hosts 字段为空;

    生成证书和私钥:

    cfssl gencert -ca=/root/work/ca.pem 
      -ca-key=/root/work/ca-key.pem 
      -config=/root/work/ca-config.json 
      -profile=kubernetes admin-csr.json | cfssljson -bare admin
    ls admin*
    

    创建 kubeconfig 文件

    kubeconfig 为 kubectl 的配置文件,包含访问 apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书;
    https://10.0.0.252:8443 后续apiserver的vip地址

    
    # 设置集群参数
    $kubectl config set-cluster kubernetes 
      --certificate-authority=/root/work/ca.pem 
      --embed-certs=true 
      --server=https://10.0.0.252:8443 
      --kubeconfig=kubectl.kubeconfig
    
    # 设置客户端认证参数
    $kubectl config set-credentials admin 
      --client-certificate=admin.pem 
      --client-key=admin-key.pem 
      --embed-certs=true 
      --kubeconfig=kubectl.kubeconfig
    
    # 设置上下文参数
    $kubectl config set-context kubernetes 
      --cluster=kubernetes 
      --user=admin 
      --kubeconfig=kubectl.kubeconfig
    
    设置默认上下文  
    $kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
    

    --certificate-authority:验证 kube-apiserver 证书的根证书;
    --client-certificate、--client-key:刚生成的 admin 证书和私钥,连接 kube-apiserver 时使用;
    --embed-certs=true:将 ca.pem 和 admin.pem 证书内容嵌入到生成的 kubectl.kubeconfig 文件中(不加时,写入的是证书文件路径);

    分发 kubeconfig 文件到所有master,并保存到用户的 ~/.kube/config 文件

    mkdir -p ~/.kube #所有节点执行
    scp kubectl.kubeconfig root@10.0.0.10:~/.kube/config
    scp kubectl.kubeconfig root@10.0.0.11:~/.kube/config
    scp kubectl.kubeconfig root@10.0.0.12:~/.kube/config
    

    kubectl 默认从 ~/.kube/config 文件读取 kube-apiserver 地址、证书、用户名等信息,如果没有配置,执行 kubectl 命令时可能会出错:

    $ kubectl get pods
    The connection to the server localhost:8080 was refused - did you specify the right host or port?
    
  • 相关阅读:
    使用 awk 命令统计文本
    Mysql基础及系统函数(分享)
    存储过程 :字段按逗号拆分并插入到关联表
    Spring Security SavedRequestAwareAuthenticationSuccessHandler类
    自制Springboot Starter
    vue3 input中回车生成标签
    NOMURA Programming Contest 2022(AtCoder Beginner Contest 253)
    Educational Codeforces Round 129 (Rated for Div. 2)
    Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)
    2022 Google Kick Start Round C
  • 原文地址:https://www.cnblogs.com/you-xiaoqing/p/14410967.html
Copyright © 2020-2023  润新知