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節點操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM