全部產品
Search
文件中心

Container Compute Service:擷取叢集kubeconfig並通過kubectl工具串連叢集

更新時間:Sep 17, 2025

本文介紹如何擷取包含當前登入使用者身份資訊的叢集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會根據該設定檔串連至叢集。

  1. 登入容器計算服務控制台,在左側導覽列選擇叢集列表

  2. 集群列表頁面,單擊目的地組群名稱或者目的地組群右側操作列下的详情

  3. 叢集資訊頁面,單擊串連資訊頁簽,選擇臨時或長期KubeConfig。對於臨時KubeConfig,需合理設定其有效期間。

  4. 選擇公網訪問內網訪問頁簽,單擊複製,將複製的KubeConfig內容粘貼至用戶端的$HOME/.kube/config檔案中,儲存並退出。

    如果$HOME/.kube/config 檔案不存在,可通過mkdir -p $HOME/.kubetouch $HOME/.kube/config來建立。
  5. 配置完成後,執行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 xxxUnable to connect to the server: x509: certificate is valid for xxx錯誤。

可將新的IP加入到API Server認證SAN中。具體操作,請參見自訂叢集API Server認證的SAN欄位。 下圖為樣本配置:

image