本文介紹如何擷取包含當前登入使用者身份資訊的叢集kubeconfig,並通過kubectl用戶端串連叢集。
kubectl和kubeconfig介紹
kubectl是標準的Kubernetes命令列管理工具,通過kubectl可串連和管理阿里雲容器計算服務(ACS)的叢集。kubeconfig中包含了有關叢集、使用者、命名空間以及身份認證機制的資訊。kubectl使用kubeconfig來串連叢集。
串連方式
可通過公網或內網兩種方式來串連叢集。
公網串連
當叢集開啟了API Server公網訪問能力(即叢集已通過阿里雲Elastic IP Address(EIP)暴露了API Server)時,可通過公網中的任一機器作為用戶端來串連叢集。關於如何開啟API Server的公網訪問能力,請參見控制叢集API Server的公網訪問能力。
內網串連
當只需要通過內網來串連叢集時,kubectl用戶端機器必須與叢集位於同一VPC。
步驟一:安裝kubectl工具
確定待安裝kubectl的用戶端機器,根據運行環境和叢集版本安裝kubectl。
步驟二:配置叢集憑證
ACS叢集提供了兩種叢集憑證(即kubeconfig),分別用於公網訪問和內網訪問。kubectl工具預設會從用戶端機器的$HOME/.kube目錄下尋找名為config的檔案。該檔案用於儲存所要管理叢集的訪問憑證,kubectl會根據該設定檔串連至叢集。
登入容器計算服務控制台,在左側導覽列選擇叢集列表。
在集群列表頁面,單擊目的地組群名稱或者目的地組群右側操作列下的详情。
在叢集資訊頁面,單擊串連資訊頁簽,選擇臨時或長期KubeConfig。對於臨時KubeConfig,需合理設定其有效期間。
選擇公網訪問或內網訪問頁簽,單擊複製,將複製的KubeConfig內容粘貼至用戶端的$HOME/.kube/config檔案中,儲存並退出。
如果
$HOME/.kube/config檔案不存在,可通過mkdir -p $HOME/.kube和touch $HOME/.kube/config來建立。配置完成後,執行kubectl命令以驗證叢集連通性。
以查詢命名空間為例。
kubectl get namespaces預期輸出:
NAME STATUS AGE default Active 4h39m kube-node-lease Active 4h39m kube-public Active 4h39m kube-system Active 4h39m
常見問題
問題一:如何擷取kubeconfig中使用的認證所關聯的身份資訊?
執行此命令時,請將YOUR_KUBECONFIG_PATH替換為實際要查詢設定檔的絕對路徑。預設情況下,kubectl使用$HOME/.kube/config檔案來串連叢集,也可以通過設定kubeconfig環境變數或設定--kubeconfig參數來指定其他kubeconfig檔案。
grep client-certificate-data YOUR_KUBECONFIG_PATH |awk '{print $2}' |base64 -d | openssl x509 -noout -text |grep Subject:預期輸出類似如下:
Subject: O=system:users, OU=, CN=1***-1673419473參數說明如下:
O表示所屬的Kubernetes使用者組資訊。樣本中的組名為system:users。CN表示關聯的使用者資訊。樣本中的使用者為1***-1673419473,其中1***關聯的是帳號下的某個阿里雲使用者ID。
問題二:如何擷取kubeconfig所使用的認證的到期時間?
執行此命令時,請將YOUR_KUBECONFIG_PATH替換為實際要查詢設定檔的絕對路徑。預設情況下,kubectl使用$HOME/.kube/config檔案來串連叢集,也可以通過設定kubeconfig環境變數或設定--kubeconfig參數來指定其他kubeconfig檔案。
grep client-certificate-data YOUR_KUBECONFIG_PATH |awk '{print $2}' |base64 -d | openssl x509 -noout -enddate預期輸出類似如下:
notAfter=Jan 10 06:44:34 2026 GMT其中Jan 10 06:44:34 2026 GMT即為認證的到期時間。
您可以在認證到期前 60 天內或到期後,通過控制台或 OpenAPI 擷取包含新認證的 kubeconfig。
問題三:如何解決通過kubectl串連叢集時提示certificate is valid for錯誤的問題?
當為叢集API Server的SLB綁定了新的IP,然後使用kubectl訪問這個新的IP時,執行kubectl命令失敗並提示Error while proxying request: x509: certificate is valid for xxx或Unable to connect to the server: x509: certificate is valid for xxx錯誤。
可將新的IP加入到API Server認證SAN中。具體操作,請參見自訂叢集API Server認證的SAN欄位。 下圖為樣本配置:
