zoukankan      html  css  js  c++  java
  • 009.Kubernetes二进制master节点部署kubectl

    一 部署 kubectl

    1.1 获取kubectl

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# wget https://storage.googleapis.com/kubernetes-release/release/v1.18.3/kubernetes-client-linux-amd64.tar.gz
      3 [root@master01 work]# tar -xzvf kubernetes-client-linux-amd64.tar.gz

    提示:本步骤操作仅需要在master01节点操作。

    1.2 分发kubectl

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# for master_ip in ${MASTER_IPS[@]}
      4   do
      5     echo ">>> ${master_ip}"
      6     scp kubernetes/client/bin/kubectl root@${master_ip}:/opt/k8s/bin/
      7     ssh root@${master_ip} "chmod +x /opt/k8s/bin/*"
      8   done

    提示:本步骤操作仅需要在master01节点操作。

    1.3 创建admin证书和密钥

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# cat > admin-csr.json <<EOF
      4 {
      5     "CN": "admin",
      6     "hosts": [],
      7     "key": {
      8         "algo": "rsa",
      9         "size": 2048
     10     },
     11     "names": [
     12         {
     13             "C": "CN",
     14             "ST": "Shanghai",
     15             "L": "Shanghai",
     16             "O": "system:masters",
     17             "OU": "System"
     18         }
     19     ]
     20 }
     21 EOF		#创建admin的CA证书请求文件

    提示:本步骤操作仅需要在master01节点操作。

    解释:

    O 为 system:masters:kube-apiserver 收到该证书后将请求的 Group 设置为 system:masters;

    预定义的 ClusterRoleBinding cluster-admin 将 Group system:masters 与 Role cluster-admin 绑定,即该 Role 授予所有 API的权限;

    该证书只会被 kubectl 当做 client 证书使用,所以 hosts 字段为空。

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# cfssl gencert -ca=/opt/k8s/work/ca.pem 
      3 -ca-key=/opt/k8s/work/ca-key.pem -config=/opt/k8s/work/ca-config.json 
      4 -profile=kubernetes admin-csr.json | cfssljson -bare admin	#生成密钥和证书

    1.4 创建kubeconfig文件

    kubectl 默认从 ~/.kube/config 文件读取 kube-apiserver 地址和认证信息。只需在master节点部署一次,其生成的 kubeconfig 文件是通用的,可以拷贝到需要执行 kubectl 命令的机器,重命名为/.kube/config即可。

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# kubectl config set-cluster kubernetes 
      4   --certificate-authority=/opt/k8s/work/ca.pem 
      5   --embed-certs=true 
      6   --server=${KUBE_APISERVER} 
      7   --kubeconfig=kubectl.kubeconfig		# 设置集群参数
      8 [root@master01 work]# kubectl config set-credentials admin 
      9   --client-certificate=/opt/k8s/work/admin.pem 
     10   --client-key=/opt/k8s/work/admin-key.pem 
     11   --embed-certs=true 
     12   --kubeconfig=kubectl.kubeconfig		# 设置客户端认证参数
     13 [root@master01 work]# kubectl config set-context kubernetes 
     14   --cluster=kubernetes 
     15   --user=admin 
     16   --kubeconfig=kubectl.kubeconfig		# 设置上下文参数
     17 [root@master01 work]# kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig	  # 设置默认上下文

    提示:本步骤操作仅需要在master01节点操作。

    解释:

    --certificate-authority:验证 kube-apiserver 证书的根证书;

    --client-certificate、--client-key:刚生成的 admin 证书和私钥,连接 kube-apiserver 时使用;

    --embed-certs=true:将 ca.pem 和 admin.pem 证书内容嵌入到生成的 kubectl.kubeconfig 文件中(默认写入的是证书文件路径,后续需要拷贝 kubeconfig 和该证书文件至到其它机器。)。

    1.5 分发kubeconfig

      1 [root@master01 ~]# cd /opt/k8s/work
      2 [root@master01 work]# source /root/environment.sh
      3 [root@master01 work]# for master_ip in ${MASTER_IPS[@]}
      4   do
      5     echo ">>> ${master_ip}"
      6     ssh root@${master_ip} "mkdir -p ~/.kube"
      7     scp kubectl.kubeconfig root@${master_ip}:~/.kube/config
      8     ssh root@${master_ip} "echo 'export KUBECONFIG=$HOME/.kube/config' >> ~/.bashrc"
      9     ssh root@${master_ip} "echo 'source <(kubectl completion bash)' >> ~/.bashrc"
     10   done

    提示:本步骤操作仅需要在master01节点操作。

  • 相关阅读:
    django之路由层(反向解析)总结
    django 路由层(反向解析)03
    Django 文件配置、pycharm及django连接数据库、表的增删改查 总结
    Django 之 文件配置、pycharm及django连接数据库、创表及表的增删改查02
    Django框架简介(1)
    编程语言类别;运行Python程序的方式;变量和常量;Python程序的垃圾回收机制;
    Python语法之垃圾回收机制
    前端js之BOM和DOM操作
    前端js之JQuery
    获取当前应用信息
  • 原文地址:https://www.cnblogs.com/itzgr/p/11865195.html
Copyright © 2011-2022 走看看