Kubernetes安裝之五:配置kubectl客戶端

dessler發表於2019-02-14

1.建立kubectl 證書

cat > /etc/ssl/kubectl/admin-csr.json <<EOF
{
  "CN": "admin",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "ST": "ChengDu",
      "L": "ChengDu",
      "O": "system:masters",
      "OU": "dessler"
    }
  ]
}
EOF
複製程式碼

cfssl gencert -ca=/etc/ssl/ca.pem \
  -ca-key=/etc/ssl/ca-key.pem \
  -config=//etc/ssl/ca-config.json \
  -profile=kubernetes admin-csr.json | cfssljson -bare admin
複製程式碼

ls
admin.csr  admin-csr.json  admin-key.pem  admin.pem
複製程式碼

  • 說明:
  • 為system:masters,kube-apiserver 收到該證書後將請求的 Group 設定為 system:masters
  • 預定義的 ClusterRoleBinding cluster-admin 將 Group system:masters 與 Role cluster-admin 繫結,該 Role 授予所有 API的許可權
  • 該證書只會被 kubectl 當做 client 證書使用,所以 hosts 欄位為空


2.分發kubctl 二進位制檔案及證書

3.建立kubectl.kubeconfig配置檔案

kubectl config set-cluster kubernetes \
>   --certificate-authority=/etc/ssl/ca.pem \
>   --embed-certs=true \
>   --server=https://192.168.1.43:8443 \
>   --kubeconfig=kubectl.kubeconfig
Cluster "kubernetes" set.
複製程式碼

kubectl config set-credentials admin \
>   --client-certificate=/etc/ssl/kubectl/admin.pem \
>   --client-key=/etc/ssl/kubectl/admin-key.pem \
>   --embed-certs=true \
>   --kubeconfig=kubectl.kubeconfig
User "admin" set.
複製程式碼

 kubectl config set-context kubernetes \
>   --cluster=kubernetes \
>   --user=admin \
>   --kubeconfig=kubectl.kubeconfig
Context "kubernetes" created.
複製程式碼

 kubectl config use-context kubernetes --kubeconfig=kubectl.kubeconfig
Switched to context "kubernetes". 
複製程式碼
  • 說明:
  • --certificate-authority:驗證 kube-apiserver 證書的根證書
  • --client-certificate、--client-key:剛生成的admin 證書和私鑰,連線 kube-apiserver 時使用
  • --embed-certs=true:將pem 和 admin.pem 證書內容嵌入到生成的 kubectl.kubeconfig 檔案中(不加時,寫入的是證書檔案路徑)

4.將kubectl.kubeconfig 分發到/root/.kube/config檔案

        其他服務如果需要使用kubectl命令,只要有二進位制檔案和這個配置檔案,就可以直接連線kubernetes叢集


相關文章