除Container Service控制台外,還可以使用Kubernetes命令列工具kubectl來管理叢集與應用。通過kubectl串連叢集時,需先擷取包含目前使用者身份資訊的叢集KubeConfig。
步驟一:安裝並配置kubectl用戶端
確定待安裝kubectl的用戶端機器,根據運行環境和叢集版本安裝kubectl。
步驟二:擷取並使用KubeConfig
1. 選擇KubeConfig類型
KubeConfig包含訪問叢集所需的認證資訊,請根據安全需求和使用情境選擇KubeConfig類型。
根據安全責任共擔模型,KubeConfig憑證需自行負責和維護,請謹慎維護其合理性和有效性,定期輪換KubeConfig並遵循最小化權限原則,避免KubeConfig泄露帶來的安全風險。
根據KubeConfig有效期間:
臨時KubeConfig:支援配置KubeConfig有效期間(30分鐘~3天),到期後自動失效,以降低KubeConfig泄露的安全風險。適用於日常營運、故障排查、CI/CD流水線等無需長期串連API Server的情境。
長期KubeConfig:預設有效期間為3年,適用於無法頻繁更新KubeConfig的自動化系統或長期監控服務。
根據訪問叢集的方式:
如使用ACK專有叢集且已開啟公網訪問,可通過 SSH 從 Master 節點擷取 KubeConfig 後在本地使用 kubectl 管理叢集。詳情請參見通過SSH串連ACK專有版叢集的Master節點。
2. 擷取KubeConfig並串連叢集
在控制台擷取 KubeConfig 後,kubectl 可依據該檔案串連並管理叢集。
RAM使用者串連叢集前,除Container Service的系統許可權外,還需要被授予叢集操作的許可權,請參見授權。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱或者目的地組群右側操作列下的詳情。
在叢集資訊頁面,單擊串連資訊頁簽,選擇臨時或長期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 有效性:為防止 KubeConfig 到期導致叢集訪問中斷,請及時更新。
長期 KubeConfig 有效期間為3年,建議在臨近到期的180天內,通過Container Service管理主控台或DescribeClusterUserKubeconfig擷取新KubeConfig。
新KubeConfig有效期間仍為3年,舊 KubeConfig 在認證到期前仍然有效。
快速吊銷KubeConfig:當KubeConfig疑似泄露時,應立即吊銷叢集的KubeConfig憑證。吊銷後,系統會產生新的 KubeConfig 和授權綁定,所有基於舊KubeConfig的串連都將失效。
清理許可權:在專案結束、員工離職等使用者不再需要存取權限的情境中,使用“清理”功能來批量回收KubeConfig許可權。清理後,系統不會產生新KubeConfig。具體操作請參見清除KubeConfig、通過ack-ram-tool清理叢集中指定使用者的許可權。
為避免許可權誤刪除,可使用KubeConfig資源回收筒,恢複已清除的指定KubeConfig許可權。
常見問題
如何擷取KubeConfig中使用的認證所關聯的身份資訊?
執行如下命令擷取。
grep client-certificate-data kubeconfig |awk '{print $2}' |base64 -d | openssl x509 -noout -text |grep Subject:請按實際情況修改kubeconfig路徑。預設情況下,kubectl使用$HOME/.kube/config來串連叢集。也可通過設定KUBECONFIG環境變數或設定--kubeconfig參數來指定其他KubeConfig檔案。
預期輸出類似如下:
Subject: O=system:users, OU=, CN=1***-1673419473其中:
O:所屬的Kubernetes使用者組資訊,樣本中的組名為system:users。CN:關聯的使用者資訊。樣本中的使用者為1***-1673419473,其中1***關聯的是帳號下的某個阿里雲使用者ID。
如何擷取KubeConfig所使用的認證的到期時間?
執行如下命令,擷取名為KubeConfig的檔案使用的認證所關聯的到期時間。
grep client-certificate-data kubeconfig |awk '{print $2}' |base64 -d | openssl x509 -noout -enddate請按實際情況修改kubeconfig路徑。預設情況下,kubectl使用$HOME/.kube/config來串連叢集。也可通過設定KUBECONFIG環境變數或設定--kubeconfig參數來指定其他KubeConfig檔案。
預期輸出類似如下:
notAfter=Jan 10 06:44:34 2026 GMT其中Jan 10 06:44:34 2026 GMT即為認證的到期時間。
支援在認證到期前180天內或認證到期後,通過控制台或者OpenAPI擷取使用新到期時間的認證的KubeConfig。
如何擷取用戶端認證、用戶端私密金鑰和API Server資訊?
可使用以下命令從KubeConfig檔案中提取用戶端認證、用戶端私密金鑰和API Server資訊。
cat ./kubeconfig |grep client-certificate-data | awk -F ' ' '{print $2}' |base64 -d > ./client-cert.pem
cat ./kubeconfig |grep client-key-data | awk -F ' ' '{print $2}' |base64 -d > ./client-key.pem
APISERVER=`cat ./kubeconfig |grep server | awk -F ' ' '{print $2}'`請按實際情況修改kubeconfig路徑。預設情況下,kubectl使用$HOME/.kube/config來串連叢集。也可通過設定KUBECONFIG環境變數或設定--kubeconfig參數來指定其他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錯誤。
ACK託管叢集:將新的IP加入到API Server認證SAN中,請參見自訂叢集API Server認證SAN。
ACK專有叢集:配置kubectl,使用
insecure-skip-tls-verify配置忽略此錯誤。重要此方式將導致用戶端不再校正API Server認證,不建議在生產環境中使用。建議熱遷移ACK專有叢集至ACK託管叢集Pro版,然後再將新IP加入到API Server認證SAN中來解決此問題。
方式一:執行kubectl命令時指定
--insecure-skip-tls-verify參數。kubectl -s https://<IP>:6443 --insecure-skip-tls-verify get ns方式二:修改KubeConfig檔案內容,新增
insecure-skip-tls-verify: true配置,然後刪除certificate-authority-data配置。apiVersion: v1 clusters: - cluster: server: https://<IP>:6443 insecure-skip-tls-verify: true name: kubernetes contexts: ...
ACK託管叢集能否提供叢集根憑證密鑰用於自助產生KubeConfig認證?
ACK託管叢集不對外提供叢集根憑證密鑰,建議通過控制台或OpenAPI擷取叢集KubeConfig。
相關文檔
可調用OpenAPI查詢叢集KubeConfig,請參見DescribeClusterUserKubeconfig。
如需登入節點,請參見ECS遠端連線方式概述。