本頁提供相關操作說明,協助您安裝 kubectl
指令列工具,以便管理及存取 Google Kubernetes Engine (GKE) 叢集。如果您在 kubectl
中執行多個叢集,則必須進行設定 Google Cloud。
您將學到以下內容:
kubectl
的運作方式。- 如何安裝
kubectl
和任何必要依附元件。 - 如何為
kubectl
設定預設叢集。 - 如何針對特定叢集執行
kubectl
指令。
本頁面適用於 IT 管理員、操作員和開發人員,他們負責設定、監控及管理雲端基礎架構,包括佈建及設定雲端資源。如要進一步瞭解 Google Cloud 說明文件中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
閱讀本頁面之前,請先熟悉 Kubernetes kubectl
。
事前準備
開始之前,請確認你已完成下列工作:
- 啟用 Google Kubernetes Engine API。 啟用 Google Kubernetes Engine API
- 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行
gcloud components update
,取得最新版本。
- 確認您有現有的 Autopilot 或 Standard 叢集。如要建立新叢集,請參閱「建立 Autopilot 叢集」。
安裝「kubectl
」
您可以使用 Google Cloud CLI 或外部套件管理工具 (例如 apt
或 yum
) 安裝 kubectl
。
gcloud
安裝
kubectl
元件:gcloud components install kubectl
確認已安裝
kubectl
,方法是檢查是否為最新版本:kubectl version --client
apt
確認您擁有
cloud-sdk
存放區:grep -rhE ^deb /etc/apt/sources.list* | grep "cloud-sdk"
輸出結果會與下列內容相似:
deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main
如果沒有列出
cloud-sdk
存放區,請安裝 gcloud CLI。安裝
kubectl
元件:apt-get update apt-get install -y kubectl
確認已安裝
kubectl
,並檢查是否為最新版本:kubectl version --client
好吃
確認您擁有
cloud-sdk
存放區:yum repolist | grep "google-cloud-sdk"
輸出結果會與下列內容相似:
google-cloud-sdk Google Cloud SDK 2,205
安裝
kubectl
元件:yum install -y kubectl
確認已安裝
kubectl
,方法是檢查是否為最新版本:kubectl version --client
安裝必要外掛程式
kubectl
和其他 Kubernetes 用戶端需要驗證外掛程式 gke-gcloud-auth-plugin
,該外掛程式會使用 Client-go 憑證外掛程式架構提供驗證權杖,以便與 GKE 叢集通訊。
Kubernetes 1.26 版發布前,gcloud CLI 會開始要求安裝 gke-gcloud-auth-plugin
二進位檔。如果未安裝外掛程式,現有的 kubectl
或其他自訂 Kubernetes 用戶端安裝作業就會停止運作。
您必須安裝這個外掛程式,才能使用 kubectl
和其他用戶端與 GKE 互動。如果未安裝外掛程式,現有用戶端會顯示錯誤訊息。
開始之前,請檢查是否已安裝外掛程式:
gke-gcloud-auth-plugin --version
如果輸出內容顯示版本資訊,請略過這個部分。
您可以使用 gcloud CLI 或 apt
或 yum
等外部套件管理工具,安裝驗證外掛程式。
gcloud
安裝 gke-gcloud-auth-plugin
二進位檔:
gcloud components install gke-gcloud-auth-plugin
apt
安裝 gke-gcloud-auth-plugin
二進位檔:
apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
好吃
安裝 gke-gcloud-auth-plugin
二進位檔:
yum install google-cloud-sdk-gke-gcloud-auth-plugin
驗證 gke-gcloud-auth-plugin
二進位檔安裝作業:
檢查
gke-gcloud-auth-plugin
二進位檔版本:gke-gcloud-auth-plugin --version
更新
kubectl
設定,以使用外掛程式:gcloud container clusters get-credentials CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION
更改下列內容:
CLUSTER_NAME
:叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
執行下列指令來驗證設定:
kubectl get namespaces
輸出結果會與下列內容相似:
NAME STATUS AGE default Active 51d kube-node-lease Active 51d kube-public Active 51d kube-system Active 51d
如要進一步瞭解這個外掛程式,請參閱 Kubernetes KEP。
與 kubectl
互動
Kubernetes 使用名為 kubeconfig
的 YAML 檔案來儲存 kubectl
的叢集驗證資訊。根據預設,檔案會儲存在 $HOME/.kube/config
。
kubeconfig
包含一組稱為「背景資訊」的存取參數。每個內容都包含 Kubernetes 叢集、使用者,以及選用的預設命名空間。kubectl
在執行指令時參照內容。
您也可以視需要執行下列工作來設定 kubectl
:
- 選擇
kubectl
要與哪個叢集通訊。 - 在
kubeconfig
檔案中設定目前背景資訊,為kubectl
設定預設叢集。 - 使用
--cluster
標記,針對特定叢集執行kubectl
指令。
查看「kubeconfig
」
如要查看環境的 kubeconfig
,請執行下列指令:
kubectl config view
這個指令會傳回已產生 kubeconfig
個項目的所有叢集清單。如果該清單列出了 GKE 叢集,您就可以在目前的環境中針對該叢集執行 kubectl
指令。否則,您必須儲存 kubectl 的叢集資訊。
查看 kubectl
的目前背景資訊
「目前背景資訊」就是 kubectl
目前的預設叢集;系統會針對該叢集執行所有 kubectl
指令。
使用 gcloud container clusters create-auto
建立叢集時,系統會自動將項目新增至您環境中的 kubeconfig
檔案,且目前背景資訊會變更成該叢集。例如:
gcloud container clusters create-auto my-cluster
Creating my-cluster...done
Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster
如要查看 kubectl
的目前背景資訊,請執行下列指令:
kubectl config current-context
儲存「kubectl
」的叢集資訊
當您使用 Google Cloud 控制台,或是在不同的電腦上使用 gcloud CLI 建立叢集時,您環境中的 kubeconfig
檔案「不會」更新。此外,如果某位專案團隊成員在自己的電腦上使用 gcloud CLI 建立叢集,他的 kubeconfig
會更新,但您的並不會更新。kubeconfig
項目包含:
- 您的憑證,如
gcloud auth list
中所示;或是 - 應用程式預設憑證 (如有設定)。
如要在環境中產生 kubeconfig
內容,請確認您具備 container.clusters.get
權限。提供這項權限的最低權限 IAM 角色為 container.clusterViewer
。
如要為特定叢集產生 kubeconfig
環境,請執行下列指令:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
更改下列內容:
CLUSTER_NAME
:叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
使用叢集的內部 IP 位址產生 kubeconfig
項目
所有叢集都有多個端點位址,且各具不同特徵。其中一個端點會做為標準端點,供 kubectl
和其他服務與叢集控制平面通訊。GKE 會依據下列順序自動選取端點:
- 外部 IP 位址 (如果您已啟用外部端點)
- 內部 IP 位址
- DNS 位址 (如果停用 IP 存取權)
如要預設使用標準端點,請執行
get-credentials
指令。如要進一步控制kubectl
使用的端點,請使用--internal-ip
或--dns-endpoint
旗標。如要更新kubeconfig
檔案以使用內部 IP 位址,請執行下列指令:
gcloud container clusters get-credentials CLUSTER_NAME --internal-ip
如要更新 kubeconfig
檔案以使用 DNS 位址,請執行下列指令:
gcloud container clusters get-credentials CLUSTER_NAME --dns-endpoint
將 CLUSTER_NAME
替換為叢集名稱。
根據預設,執行 get-credentials
時會使用 endpoint
欄位中指定的 IP 位址。
設定 kubectl
指令的預設叢集
如果您先前已為叢集產生 kubeconfig 項目,可以執行下列指令,將 kubectl
的目前背景資訊切換成該叢集:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
更改下列內容:
CLUSTER_NAME
:叢集名稱。CONTROL_PLANE_LOCATION
:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
舉例來說,假設某個專案有兩個叢集:my-cluster
和my-new-cluster
。目前背景資訊是 my-new-cluster
,但您想要針對 my-cluster
執行「所有」kubectl
指令。如要將目前背景資訊從 my-new-cluster
切換為 my-cluster
,請執行下列指令:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION
針對特定叢集執行個別的 kubectl
指令
您可以使用 --cluster=CLUSTER_NAME
,針對特定叢集執行個別的 kubectl
指令。
舉例來說,假設某個環境有兩個叢集 (my-cluster
和 my-new-cluster
),而環境的目前背景資訊為 my-cluster
。您想要將應用程式部署到 my-new-cluster
,但您不希望變更目前背景資訊。如要將應用程式部署到 my-new-cluster
,但不變更目前背景資訊,請執行下列指令:
kubectl run my-app --image us-docker.pkg.dev/my-project/my-repo/my-app:1.0 --cluster my-new-cluster
後續步驟
歡迎試用
如果您未曾使用過 Google Cloud,歡迎建立帳戶,親自體驗實際使用 GKE 的成效。新客戶可以獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
免費試用 GKE