管理叢集

本文將說明如何在 Google Kubernetes Engine (GKE) 中管理叢集。如要瞭解叢集的運作方式,請參閱叢集架構。

事前準備

開始之前,請務必先完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝並初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 指令,取得最新版本。較舊的 gcloud CLI 版本可能不支援執行本文件中的指令。

查看叢集

gcloud

  • 如要查看特定叢集,請執行下列指令:

    gcloud container clusters describe CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION
    

    更改下列內容:

    • CLUSTER_NAME:叢集名稱。
    • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。提供區域叢集的區域,或可用區叢集的可用區。
  • 如要列出專案中任何區域或可用區的所有叢集,請執行下列指令:

    gcloud container clusters list
    
  • 如要列出特定區域或可用區中的叢集,請執行下列指令:

    gcloud container clusters list \
        --location=CONTROL_PLANE_LOCATION
    

控制台

如要查看叢集,請前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

前往「Google Kubernetes Engine」

如要進一步瞭解叢集,請從清單中選取叢集。

為「kubectl」設定預設叢集

如果有多個叢集,則可以設定 kubectl 指令列工具的預設叢集。

詳情請參閱「設定 kubectl 指令的預設叢集」。

為「gcloud」設定預設叢集

如要設定 gcloud 指令的預設叢集,請執行下列指令:

gcloud config set container/cluster CLUSTER_NAME

將 CLUSTER_NAME 替換為叢集名稱。

升級叢集

根據預設,GKE 會自動升級叢集。不過,您可以選擇自行升級標準叢集。詳情請參閱「手動升級叢集」。

如需升級叢集的指南,請參閱「升級叢集的最佳做法」。

在 Standard 叢集中新增或移除可用區

以下各節說明如何新增或移除叢集可用區。所有可用區都必須位於叢集的區域。

做好中斷準備。

變更可用區叢集的可用區

如果是現有的可用區叢集,您可以新增或移除可用區。

gcloud

如要為區域叢集新增或移除區域,請使用 gcloud container clusters update 指令:

gcloud container clusters update CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION \
  --node-locations COMPUTE_ZONE1,COMPUTE_ZONE2

更改下列內容:

  • CLUSTER_NAME:您為叢集選擇的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 可用區。
  • COMPUTE_ZONE1,COMPUTE_ZONE2,[...]:建立節點的可用區。您可以視叢集需求指定任意數量的可用區。所有可用區都必須與叢集控制層位於同一個區域,並由 --location 旗標指定。如果是區域叢集,--node-locations 必須包含叢集的主要區域。

例如,example-cluster 是在 us-central1-a 中執行。如要在叢集中額外新增兩個區域,請執行下列指令:

gcloud container clusters update example-cluster \
  --location us-central1-a
  --node-locations us-central1-a,us-central1-b,us-central1-c

在另一個範例中,example-cluster 在 us-central1-a、us-central1-b 和 us-central1-c中執行。如果只要叢集在 us-central1-a 和 us-central1-b 中執行,則可以執行下列指令:

gcloud container clusters update example-cluster \
  --location us-central1-a \
  --node-locations us-central1-a,us-central1-b

主控台

如要在現有叢集中新增或移除可用區,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下要編輯的叢集旁的「動作」,然後按一下「編輯」。

  3. 在「詳細資料」分頁中,按一下「預設節點區域」欄位下方的「編輯節點集區」。

  4. 選取所需區域,然後儲存變更。

變更區域叢集的可用區

目前,只能使用 gcloud 指令變更現有地區叢集的區域。

如要為地區叢集新增或移除區域,請使用 gcloud container clusters update 指令並加上 --node-locations 旗標:

gcloud container clusters update CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION \
  --node-locations COMPUTE_ZONE1,COMPUTE_ZONE2

更改下列內容:

  • CLUSTER_NAME:叢集名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域。
  • COMPUTE_ZONE1、COMPUTE_ZONE2,[...]:建立節點的可用區控制層區域。可用區必須與 --location 旗標指定的叢集控制層位於相同的 CONTROL_PLANE_LOCATION。

例如,example-cluster 是在 us-central1-a 和 us-central1-b 中執行。如要新增 us-central1-c,請執行下列指令:

gcloud container clusters update example-cluster \
  --location us-central1 \
  --node-locations us-central1-a,us-central1-b,us-central1-c

在另一個範例中,example-cluster 在 us-central1-a、us-central1-b 和 us-central1-c中執行。如果只要叢集在 us-central1-a 和 us-central1-b 中執行,則可以執行下列指令:

gcloud container clusters update example-cluster \
  --location us-central1 \
  --node-locations us-central1-a,us-central1-b

調整叢集大小

您可以調整 Standard 叢集的大小,增加或減少節點數量。舉例來說,如果您想停止叢集耗用資源,但不想刪除叢集,可以將節點縮減為零。如要進一步瞭解如何調整大小,請參閱「調整叢集大小」。

Autopilot 叢集會根據 Pod 規格自動調整大小,因此您不必擔心叢集大小問題。舉例來說,如果您變更 Pod 副本數量或要求的資源,叢集會適當放大或縮小。

如要以更有效率的方式最佳化叢集,也可以使用垂直自動調度 Pod 資源 (VPA)。自動配置器可以建議 CPU/記憶體要求和相關限制的值,這些值也可自動更新。

刪除叢集

如有需要,可以刪除叢集。詳情請參閱「刪除叢集」。

使用拒絕政策防止叢集遭到刪除

您可以透過 IAM 拒絕政策,防止刪除特定重要叢集,無論是哪個主體嘗試刪除都適用。如要在拒絕政策中指定特定叢集,請在這些叢集中加入標記。接著,您可以使用拒絕條件,將拒絕政策套用至具有該標記的叢集。

如要防止特定叢集遭到刪除,請按照下列步驟操作:

  1. 建立及定義標記鍵,以識別受保護的叢集。舉例來說,您可以建立名為 do_not_delete 的標記鍵。

  2. 將標記鍵附加至叢集。

  3. 選取下列其中一個選項,建立 IAM 拒絕政策:

    控制台

    1. 前往 Google Cloud 控制台,然後前往「IAM」頁面的「Deny」(拒絕) 分頁。

      前往「IAM Deny」(IAM 拒絕) 頁面

    2. 按一下「 Create deny policy」(建立拒絕政策)。「Create deny policy」(建立拒絕政策) 頁面隨即開啟。

    3. 在「ID」欄位中,指定拒絕政策的專屬 ID,這個 ID 無法變更。

    4. 在「New deny rule」(新增拒絕規則) 專區中,執行以下操作:

      1. 在「Denied principals」(遭拒主體) 欄位中,指定 principalSet://goog/public:all,涵蓋所有主體。

      2. 在「Denied permissions」部分,於「Permission 1」下拉式選單中,找出並選取 container.googleapis.com/clusters.delete 權限。

      3. 按一下「新增拒絕條件」。「新增拒絕條件」窗格隨即開啟。

      4. 為條件指定清楚明確的標題,例如 Cluster has the do_not_delete tag。

      5. 在「條件建構工具」分頁中,從「條件類型 1」下拉式選單中選取「標記」。

      6. 在「運算子」下拉式選單中,選取「包含鍵」。

      7. 在 Key path 下拉式選單中,選取您套用至叢集的標記金鑰,例如 do_not_delete。

      8. 按一下 [儲存]。

    5. 點選「建立」。

    gcloud

    1. 建立包含下列拒絕政策的 JSON 檔案:

      {
        "displayName": "Prevent cluster deletion based on tag",
        "rules": [
          {
            "description": "Prevent cluster deletion based on tag",
            "deniedPrincipals": [
              "principalSet://goog/public:all"
            ],
            "deniedPermissions": [
              "container.googleapis.com/clusters.delete"
            ],
            "denialCondition": {
              "title": "Cluster has the do_not_delete tag",
              "expression": "resource.hasTagKey('TAG_KEY_NAME')"
            }
          }
        ]
      }
      

      將 TAG_KEY_NAME 替換為您建立的標記金鑰路徑。

    2. 使用 gcloud iam policies create 指令建立拒絕政策:

      gcloud iam policies create POLICY_ID \
          --attachment-point=ATTACHMENT_POINT \
          --kind=denypolicies --policy-file=POLICY_FILE
      

      更改下列內容:

      • POLICY_ID:拒絕政策的 ID。
      • ATTACHMENT_POINT:要附加拒絕政策的機構、資料夾或專案。舉例來說,如果您將拒絕政策附加至資料夾,該政策會套用至該資料夾中任何專案的叢集。詳情請參閱「連接點」。
      • POLICY_FILE:您在上一個步驟中建立的 JSON 檔案路徑。

建立拒絕政策後,任何人都無法刪除具有拒絕條件中指定標記鍵的叢集。任何刪除叢集的嘗試都會失敗,並顯示 Permission denied 錯誤訊息。如要允許刪除叢集,請從叢集卸離該標記鍵。

將叢集新增至機群

如果貴組織使用多個叢集,可以將叢集新增至機群 (Kubernetes 叢集的邏輯群組),簡化多叢集管理作業。建立機群後,貴機構就能將管理單位從個別叢集提升為整個叢集群組,並使用支援機群的功能,例如多叢集 Ingress、 Config Sync 和 Policy Controller。

您可以使用Google Cloud 控制台、gcloud CLI,或透過 Terraform 或 Config Connector 以宣告方式,將 GKE 叢集新增至機群。

如要進一步瞭解機群的運作方式,請參閱「機群管理」一文;如要瞭解如何建立機群,請參閱「建立機群,簡化多叢集管理作業」一文。

後續步驟