設定 kubectl 的叢集存取權

本頁面說明如何在 Google Kubernetes Engine 中為 kubectl 指令列工具設定叢集存取權。

總覽

如果您在 Google Cloud Platform 專案中執行多個叢集,您必須選擇 kubectl 要與哪個叢集通訊。您可以在 Kubernetes 的 kubeconfig 檔案中設定目前背景資訊,為 kubectl 設定預設叢集。此外,您也可以使用 --cluster 標記對特定叢集執行 kubectl 指令。

下列各節說明 kubeconfig 的運作方式、如何為 kubectl 設定預設叢集,以及如何對特定叢集執行個別的 kubectl 指令。

事前準備

如要準備這項工作,請執行下列步驟:

  • 確認您已啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 確認您已安裝 Cloud SDK
  • 設定預設的專案 ID
    gcloud config set project [PROJECT_ID]
  • 如果您使用區域叢集,請設定預設的運算區域
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 如果您使用地區叢集,請設定預設的運算地區
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud 更新到最新版本:
    gcloud components update

Kubernetes 設定檔

Kubernetes 使用名為 kubeconfig 的 YAML 檔案來儲存 kubectl 的叢集驗證資訊。kubeconfig 包含 kubectl 在執行指令時參照的背景資訊清單。根據預設,檔案儲存位置為 $HOME/.kube/config

「背景資訊」是一組存取參數。每個背景資訊都包含一個 Kubernetes 叢集、一位使用者和一個命名空間。「目前背景資訊」kubectl 目前的預設叢集:系統會對該叢集執行所有 kubectl 指令。

使用 gcloud container clusters create 建立叢集時,會在環境中的 kubeconfig 自動加入項目,且目前背景資訊會變更為該叢集:

gcloud container clusters create my-cluster
Creating my-cluster...done
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster

當您使用 Google Cloud Platform 主控台或從其他電腦使用 gcloud 建立叢集時,「不會」更新環境中的 kubeconfig。此外,如果某位專案小組成員從自己的電腦使用 gcloud 來建立叢集,他們的 kubeconfig 會更新,但您的不會。請按照下列操作說明,將這些叢集加入您的本機 kubeconfig 中。

叢集端點簡介

所有叢集都有標準端點,端點為 Kubernetes API 伺服器的 IP 位址,能讓 kubectl 和其他服務與您的叢集主要執行個體通訊。端點會顯示在 GCP 主控台中,叢集的「Details」(詳細資料) 分頁標籤的「Endpoints」(端點) 欄位底下,以及 gcloud container clusters describe 輸出內容的 endpoint 欄位底下。

執行 gcloud container clusters get-credentials 時,您會看到該指令在更新 kubeconfig 的過程中取得叢集端點。

私人叢集有兩個唯一的端點值:privateEndpoint (內部 IP 位址) 和 publicEndpoint (外部 IP 位址)。根據預設,對私人叢集執行 get-credentials 會將外部 IP 位址設為端點。如果您偏好使用內部 IP 位址做為端點,請參閱使用私人叢集的內部 IP 位址產生 kubeconfig 項目

查看 kubectl 的目前背景資訊

如要查看 kubectl 的目前背景資訊,請執行下列指令:

kubectl config current-context

查看 kubeconfig

如要查看環境的 kubeconfig,請執行下列指令:

kubectl config view

這項指令會傳回已產生 kubeconfig 項目的所有叢集清單。如果清單中列出了某個 GKE 叢集,您可以在目前的環境中對該叢集執行 kubectl 指令。否則,您就必須為該叢集產生 kubeconfig 項目

產生 kubeconfig 項目

如要透過另一台電腦或由專案的其他成員對在 GCP 主控台中建立的叢集執行 kubectl 指令,您必須在您的環境中產生 kubeconfig 項目。

請執行下列指令以產生 kubeconfig 項目:

gcloud container clusters get-credentials [CLUSTER_NAME]

其中 [CLUSTER_NAME] 是叢集的名稱。

kubeconfig 項目包含:

  1. 您的憑證,如 gcloud auth list 中所示,或者,
  2. 應用程式預設的憑證 (如果已有設定)。

使用私人叢集的內部 IP 位址產生 kubeconfig 項目

執行 get-credentials 時,您可以指定 --internal-ip,將私人叢集的內部 IP 位址寫入 kubeconfig

gcloud container clusters get-credentials --internal-ip [CLUSTER_NAME]

設定 kubectl 指令的預設叢集

如果您先前已為叢集產生 kubeconfig 項目,您可以執行 gcloud container clusters get-credentials,將 kubectl 的目前背景資訊切換為該叢集。

舉例來說,假設某個專案包含 my-clustermy-new-cluster 兩個叢集。目前背景資訊為 my-new-cluster,但您想對 my-cluster 執行「所有」kubectl 指令。

如要將目前背景資訊切換為 my-cluster,請執行下列指令:

gcloud container clusters get-credentials my-cluster

對特定叢集執行個別的 kubectl 指令

您可以傳入顯示為 kubeconfig--cluster 標記引數的叢集名稱,對特定叢集執行個別的 kubectl 指令。

舉例來說,假設某個環境中包含 my-clustermy-new-cluster 兩個叢集,且目前背景資訊為 my-cluster。您要將應用程式部署至 my-new-cluster,但不想變更目前背景資訊。

如要將應用程式部署至 my-new-cluster,請執行下列指令:

kubectl run my-app --image gcr.io/my-bucket/my-app:1.0 --cluster my-new-cluster

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件