全部產品
Search
文件中心

Container Service for Kubernetes:擷取叢集KubeConfig並通過kubectl工具串連叢集

更新時間:Sep 16, 2025

除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的自動化系統或長期監控服務。

  • 根據訪問叢集的方式:

    • 內網訪問:擷取內網訪問的KubeConfig,此時kubectl用戶端機器必須與叢集位於同一VPC。通過阿里雲內網串連時,延遲更低,更安全。

    • 公網訪問:擷取公網訪問的KubeConfig,通過公網中的任意機器作為用戶端來串連叢集。依賴 EIP 串連 API Server,適用於本地開發或遠程營運。

      EIP 綁定後,相關費用請參見隨用隨付
  • 如使用ACK專有叢集且已開啟公網訪問,可通過 SSH 從 Master 節點擷取 KubeConfig 後在本地使用 kubectl 管理叢集。詳情請參見通過SSH串連ACK專有版叢集的Master節點

2. 擷取KubeConfig並串連叢集

在控制台擷取 KubeConfig 後,kubectl 可依據該檔案串連並管理叢集。

RAM使用者串連叢集前,除Container Service的系統許可權外,還需要被授予叢集操作的許可權,請參見授權
  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  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中使用的認證所關聯的身份資訊?

執行如下命令擷取。

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 xxxUnable 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。

相關文檔