設定 kubectl 的叢集存取權

本頁說明如何為 GKE on AWS 的 kubectl 指令列工具設定叢集存取權。

本文適用於想要設定、監控及管理雲端基礎架構的 IT 管理員和操作人員。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。

總覽

如要存取 GKE on AWS,您需要設定 kubectl。您可以在 Kubernetes 的 kubeconfig 檔案中設定目前背景資訊,為 kubectl 設定預設叢集。此外,您可以使用 --cluster 標記,針對特定的叢集來執行 kubectl 指令。

如要進一步瞭解 kubeconfig 和叢集端點,請參閱「關於 Kubeconfig」。

事前準備

如果您使用 Connect 閘道進行 kubectl 存取,則必須將「透過 gcloud CLI 的身分使用 kubectl」一文所述的 IAM 角色,授予非專案擁有者的管理員使用者。

檢查目前的 kubeconfig

本節說明如何查看目前的 kubeconfig

查看 kubeconfig 結構定義

如要查看環境的 kubeconfig 和其中包含的所有內容,請執行下列指令:

kubectl config view

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

查看 kubectl 的目前背景資訊

如要查看 kubectl 指令列工具使用的目前環境,請執行下列指令:

kubectl config current-context

kubectl 會輸出目前內容的名稱。

產生 kubeconfig 項目

如要對 GKE 叢集執行 kubectl 指令,您必須產生 kubeconfig 項目。產生 kubeconfig 檔案的方式,取決於您要如何連線至叢集。建議使用連線閘道。使用 Connect 閘道時,gke-connect-agent Deployment 會透過 Google 將要求傳送至叢集控制平面。

如要查看 Connect 閘道支援哪些 kubectl 指令,請參閱「限制」。

如要透過私人端點連線,您必須在 AWS 虛擬私有雲中建立連線,並將路由傳送至控制平面端點。叢集的 kube-apiserver 是控制層的一部分。如要將要求直接傳送至私人端點,您可能需要擴大防火牆規則。如要進一步瞭解如何連線至控制層,請參閱「AWS 安全性群組」。

連結閘道

gcloud container aws clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION

更改下列內容:

  • CLUSTER_NAME:叢集名稱
  • GOOGLE_CLOUD_LOCATION:管理 GKE on AWS 的 Google Cloud 區域或可用區

私人端點

如要連線至私人端點,您必須連線至叢集的控制層。請參閱「連線至叢集控制層」。

gcloud container aws clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --private-endpoint

更改下列內容:

  • CLUSTER_NAME:叢集名稱
  • GOOGLE_CLOUD_LOCATION:管理 GKE on AWS 的 Google Cloud 區域或可用區

使用多個叢集

本節說明如何搭配多個 GKE 叢集使用 kubectl

設定 kubectl 指令的預設叢集

您可以執行下列指令,將 kubectl 的目前背景資訊切換成該叢集:

gcloud container aws clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \

更改下列內容:

  • CLUSTER_NAME:叢集名稱
  • GOOGLE_CLOUD_LOCATION:管理 GKE on AWS 的 Google Cloud 區域或可用區

舉例來說,假設某個專案有兩個叢集:cluster-1cluster-2。目前的背景資訊為 cluster-2。如要將目前背景資訊從 cluster-2 切換為 cluster-1,請執行下列指令:

gcloud container aws clusters get-credentials cluster-1 \
  --location GOOGLE_CLOUD_LOCATION

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

您可以針對特定叢集執行個別的 kubectl 指令,方法是把該叢集的名稱顯示在 kubeconfig做為 --cluster 標記的引數來傳入。

舉例來說,假設某個環境有兩個叢集 (cluster-1cluster-2),而環境的目前背景資訊為 cluster-1。您不希望變更目前背景資訊。如要在 cluster-2 上取得 Pod 物件清單,而不變更目前的環境,請執行下列指令:

kubectl get pod --cluster cluster-2