• 高可用Kubernetes集群-4. kubectl客户端工具


    六.部署kubectl客户端工具

    1. 下载

    [root@kubenode1 ~]# cd /usr/local/src/
    [root@kubenode1 src]# wget https://storage.googleapis.com/kubernetes-release/release/v1.9.2/kubernetes-server-linux-amd64.tar.gz
    [root@kubenode1 src]# tar -zxvf kubernetes-server-linux-amd64.tar.gz
    
    # kubectl等所有可执行文件在解压目录下server/bin目录下,另含kube-apiserver,kube-controller-manager,kube-scheduler,kube-proxy与kubelet等
    [root@kubenode1 src]# mv /usr/local/src/kubernetes/server/bin/ /usr/local/src/kubernetes/
    [root@kubenode1 src]# rm -rf /usr/local/src/kubernetes/server/
    [root@kubenode1 src]# mv /usr/local/src/kubernetes/ /usr/local/

    2. 创建kubectl TLS证书与私钥

    1)创建kubectl证书签名请求

    [root@kubenode1 ~]# cd /etc/kubernetes/admin/
    [root@kubenode1 admin]# touch admin-csr.json
    
    # kube-apiserver 使用 RBAC 对客户端(如 kubelet、kube-proxy等)请求进行授权;
    # kube-apiserver 预定义一部分 RBAC,含Role/ RoleBinding,ClusterRole/ ClusterRoleBinding;
    # 如 ClusterRoleBinding将 Group system:masters 与 ClusterRole cluster-admin 绑定,而ClusterRole cluster-admin 拥有访问kube-apiserver 的所有权限,因此”CN”:“admin”这个用户同样拥有访问kube-apiserver 的所有权限,可作为集群超级管理员;
    # O 指定该证书的 Group 为 system:masters,kubelet 使用该证书访问 kube-apiserver 时,由于证书被 CA 签名,所以认证通过,同时由于证书用户组为经过预授权的 system:masters,所以被授予访问所有 API 的权限;
    # hosts 属性值为空列表,即没有ip或主机名限制
    [root@kubenode1 admin]# vim admin-csr.json
    {
        "CN": "admin",
        "hosts": [],
        "key": {
            "algo": "rsa",
            "size": 2048
        },
        "names": [
            {
                "C": "CN",
                "ST": "ChengDu",
                "L": "ChengDu",
                "O": "system:masters",
                "OU": "cloudteam"
            }
        ]
    }

    2)生成kubectl证书与私钥

    [root@kubenode1 admin]# cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem 
    -ca-key=/etc/kubernetes/ssl/ca-key.pem 
    -config=/etc/kubernetes/ssl/ca-config.json 
    -profile=kubernetes admin-csr.json | cfssljson -bare admin

    # 分发admin.pem,admin-key.pem
    [root@kubenode1 admin]# scp admin.pem admin-key.pem root@172.30.200.22:/etc/kubernetes/admin/
    [root@kubenode1 admin]# scp admin.pem admin-key.pem root@172.30.200.23:/etc/kubernetes/admin/

    3. 创建kubectl kubeconfig文件

    kubectl客户端工具在TLS通信时,如不配置kubeconfig文件,在访问api-server时需要指定api-server的地址以及客户端的证书等信息,比较繁琐。  

    # 配置集群参数;
    # --server:指定api-server,采用ha之后的vip;
    # cluster名自定义,设定之后需保持一致;
    # --kubeconfig:指定kubeconfig文件路径与文件名;如果不设置,默认生成在~/.kube/config文件
    [root@kubenode1 admin]# kubectl config set-cluster kubernetes 
    --certificate-authority=/etc/kubernetes/ssl/ca.pem 
    --embed-certs=true 
    --server=https://172.30.200.10:6443 
    --kubeconfig=admin.conf
    
    # 配置客户端认证参数;
    # 认证用户为前文签名中的“admin”;
    # 指定对应的公钥证书/私钥等
    [root@kubenode1 admin]# kubectl config set-credentials admin 
    --client-certificate=/etc/kubernetes/admin/admin.pem 
    --embed-certs=true 
    --client-key=/etc/kubernetes/admin/admin-key.pem 
    --kubeconfig=admin.conf
    
    # 配置上下文参数
    [root@kubenode1 admin]# kubectl config set-context admin@kubernetes 
    --cluster=kubernetes 
    --user=admin 
    --kubeconfig=admin.conf
    
    # 配置默认上下文
    [root@kubenode1 admin]# kubectl config use-context admin@kubernetes --kubeconfig=admin.conf

    # 分发kubeconfig文件到所有运行kubectl的客户端节点;
    # kubectl 默认从 ~/.kube/config 配置文件获取访问 kube-apiserver 地址、证书、用户名等信息,分发时,路径/文件名请注意修改
    [root@kubenode1 admin]# cp /etc/kubernetes/admin/admin.conf ~/.kube/config
  • 相关阅读:
    ASP.NET(C#) DataSet数据导出到Excel
    GridView生成导出EXECL
    Gridview 手动排序实现
    用DirectoryInfo搜索文件夹时过滤隐藏文件夹
    为 DropDownList 选项添加背景或样式 收
    IIS中 CS0016: 未能写入输出文件 …….*.dll拒绝访问
    singletontheorylazy.cs
    adaptertwowayseabird.cs
    StatefulLabel.cs
    LifecycleControl.cs
  • 原文地址:https://www.cnblogs.com/netonline/p/8674539.html
Copyright © 2020-2023  润新知