安裝 kubectl 並設定叢集存取權


本頁提供相關操作說明,協助您安裝 kubectl 指令列工具,以便管理及存取 Google Kubernetes Engine (GKE) 叢集。如果您在 kubectl 中執行多個叢集,則必須進行設定 Google Cloud。

您將學到以下內容:

本頁面適用於 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 或外部套件管理工具 (例如 aptyum) 安裝 kubectl

gcloud

  1. 安裝 kubectl 元件:

    gcloud components install kubectl
    
  2. 確認已安裝 kubectl,方法是檢查是否為最新版本:

    kubectl version --client
    

apt

  1. 確認您擁有 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
    
  2. 如果沒有列出 cloud-sdk 存放區,請安裝 gcloud CLI

  3. 安裝 kubectl 元件:

    apt-get update
    apt-get install -y kubectl
  4. 確認已安裝 kubectl,並檢查是否為最新版本:

    kubectl version --client

好吃

  1. 確認您擁有 cloud-sdk 存放區:

    yum repolist | grep "google-cloud-sdk"

    輸出結果會與下列內容相似:

    google-cloud-sdk    Google Cloud SDK    2,205
    
  2. 安裝 kubectl 元件:

    yum install -y kubectl
  3. 確認已安裝 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 或 aptyum 等外部套件管理工具,安裝驗證外掛程式。

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 二進位檔安裝作業:

  1. 檢查 gke-gcloud-auth-plugin 二進位檔版本:

    gke-gcloud-auth-plugin --version
    
  2. 更新 kubectl 設定,以使用外掛程式:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。為地區叢集提供地區,或為區域叢集提供區域。
  3. 執行下列指令來驗證設定:

    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 項目包含:

如要在環境中產生 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-clustermy-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-clustermy-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