管理叢集

本文說明如何在 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
    

控制台

如要查看叢集,請前往 Cloud de Confiance 控制台的「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-clusterus-central1-aus-central1-bus-central1-c中執行。如果只要叢集在 us-central1-aus-central1-b 中執行,則可以執行下列指令:

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

主控台

如要在現有的區域中新增或移除區域,請執行下列步驟:

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

    前往「Google Kubernetes Engine」

  2. 按一下要編輯的叢集旁的「Actions」(動作),然後按一下「Edit」(編輯)

  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_ZONE1COMPUTE_ZONE2,[...]:節點建立所在的可用區控制層區域。這些區域必須與叢集控制層位於相同的 CONTROL_PLANE_LOCATION,並以 --location 旗標指定。

例如,example-cluster 是在 us-central1-aus-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-clusterus-central1-aus-central1-bus-central1-c中執行。如果只要叢集在 us-central1-aus-central1-b 中執行,則可以執行下列指令:

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

調整叢集大小

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

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

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

刪除叢集

如要刪除叢集,詳情請參閱「刪除叢集」。

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

您可以透過 IAM 拒絕政策,防止刪除特定重要叢集,無論嘗試刪除的主體為何都適用。如要在拒絕政策中指定叢集,請為這些叢集新增標記。然後使用拒絕條件,只對含有該標記的叢集套用拒絕政策。

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

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

  2. 將標籤鍵附加至叢集

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

    控制台

    1. 前往 Cloud de Confiance 控制台的「IAM」頁面,然後點選「拒絕」分頁標籤。

      前往 IAM 拒絕政策

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

    3. 在「ID」欄位中,指定拒絕政策的專屬固定 ID。

    4. 在「New deny rule」(新增拒絕規則) 部分,執行下列操作:

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

      2. 在「Denied permissions」(遭拒絕的權限) 部分,找出並選取「Permission 1」(權限 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 SyncPolicy Controller

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

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

後續步驟