4. 二進位制配置 Kubectl 命令列工具
阿新 • • 發佈:2021-10-04
部署 kubectl 命令列工具
kubectl 預設從 ~/.kube/config
配置檔案獲取訪問 kube-apiserver 地址、證書、使用者名稱等資訊
#一鍵安裝kubectl 需保證yum源中存在資源
$ yum install kubectl
建立 admin 證書
kubectl 與 kube-apiserver 的安全埠通訊,需要為安全通訊提供 TLS 證書和祕鑰。
建立 admin 證書籤名請求
$ cd /root/cfssldir $ cat admin-csr.json { "CN": "admin", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "BeiJing", "L": "BeiJing", "O": "system:masters", "OU": "System" } ] }
- 後續
kube-apiserver
使用RBAC
對客戶端(如kubelet
、kube-proxy
、Pod
)請求進行授權; kube-apiserver
預定義了一些RBAC
使用的RoleBindings
,如cluster-admin
將 Groupsystem:masters
與 Rolecluster-admin
繫結,該 Role 授予了呼叫kube-apiserver
所有 API的許可權;- O 指定該證書的 Group 為
system:masters
,kubelet
使用該證書訪問kube-apiserver
時 ,由於證書被 CA 簽名,所以認證通過,同時由於證書使用者組為經過預授權的system:masters
- hosts 屬性值為空列表;
生成 admin 證書和私鑰,建立kubectl資料夾,用於存放相關檔案
$ cfssl gencert -ca=/root/cfssldir/ca.pem \ -ca-key=/root/cfssldir/ca-key.pem \ -config=/root/cfssldir/ca-config.json \ -profile=kubernetes admin-csr.json | cfssljson -bare admin $ ls admin* admin.csr admin-csr.json admin-key.pem admin.pem $ mkdir -p /root/kubectl $ sudo cp admin*.pem ca.pem /root/kubectl
建立 kubectl kubeconfig 檔案
$ cd /root/kubectl
$ vim createkubectlcfg.sh
# 設定叢集引數
kubectl config set-cluster kubernetes \
--certificate-authority=/root/kubectl/ca.pem \
--embed-certs=true \
--server=https://100.69.218.95:6443
--kubeconfig=kubectl.kubeconfig
# 設定客戶端認證引數
kubectl config set-credentials admin \
--client-certificate=/root/kubectl/admin.pem \
--embed-certs=true \
--client-key=/root/kubectl/admin-key.pem
--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 檔案中(不加時,寫入的是證書檔案路徑);
生成kubectl.kubeconfig 檔案並替換原始配置
$ chmod +x createkubectlcfg.sh
$ bash createkubectlcfg.sh
$ cp kubectl.kubeconfig ~/.kube/config
元件驗證
執行如下命令,有正常返回值則配置成功:
kubectl get cs