建立地區叢集

本文說明如何建立標準區域叢集,在叢集升級、自動維護或區域中斷期間,提高叢集控制層和工作負載的可用性。

GKE Autopilot 叢集一律為區域叢集。

總覽

建立區域叢集 (而非區域叢集) 時,叢集的控制層會在指定區域的多個可用區中複製。對於區域叢集中的節點集區,您可以手動指定要執行節點集區的可用區,也可以使用預設設定,將每個節點集區複製到控制層區域的三個可用區。所有可用區都必須與叢集的控制層位於同一個區域。

地區叢集會複製跨多個區域的資源,並耗用額外的配額。

如要瞭解不同叢集可用性類型,請參閱「關於叢集設定選項」。

以下各節的操作說明將介紹如何:

建立區域叢集後,就無法轉換為可用區叢集。

建立新的區域叢集時,您至少需要指定名稱、專案 (通常是目前的專案) 和區域 (通常是指令列工具的預設位置),其他所有值則使用預設設定。不過,還有更多可能的設定,本指南僅說明其中一部分,且部分設定在叢集建立後就無法變更。請務必瞭解叢集建立後無法變更的設定,並在建立叢集時選擇正確的設定,以免需要重新建立。

如要查看叢集設定選項的總覽,請參閱「關於叢集設定選項」一文,如要查看完整選項清單,請參閱 gcloud container clusters create 和 Terraform google_container_cluster 參考指南。

事前準備

開始之前,請確認您已執行下列工作:

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

為 GKE 設定 IAM 服務帳戶

GKE 會使用附加至節點的 IAM 服務帳戶,執行記錄和監控等系統工作。這些節點服務帳戶至少須具備專案的 Kubernetes Engine 預設節點服務帳戶 (roles/container.defaultNodeServiceAccount) 角色。根據預設,GKE 會使用Compute Engine 預設服務帳戶 (系統會在專案中自動建立) 做為節點服務帳戶。

如要將 roles/container.defaultNodeServiceAccount 角色授予 Compute Engine 預設服務帳戶,請完成下列步驟:

控制台

  1. 前往「歡迎」頁面:

    前往「歡迎」頁面

  2. 在「Project number」(專案編號) 欄位中,按一下 「Copy to clipboard」(複製到剪貼簿)。
  3. 前往「IAM」頁面:

    前往「身分與存取權管理」頁面

  4. 按一下 「授予存取權」。
  5. 在「New principals」(新主體) 欄位中,指定下列值:
    PROJECT_NUMBER-compute@developer.gserviceaccount.com
    將 PROJECT_NUMBER 替換為您複製的專案編號。
  6. 在「選取角色」選單中,選取「Kubernetes Engine 預設節點服務帳戶」角色。
  7. 按一下 [儲存]。

gcloud

  1. 找出 Google Cloud 專案編號:
    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"

    將 PROJECT_ID 替換為專案 ID。

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

    12345678901
    
  2. 將 roles/container.defaultNodeServiceAccount 角色授予 Compute Engine 預設服務帳戶:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/container.defaultNodeServiceAccount"

    將 PROJECT_NUMBER 替換為上一個步驟中的專案編號。

建立具有單一可用區節點集區的區域叢集

下列操作說明會示範如何建立區域叢集,並在該區域的單一可用區中運作節點集區。叢集的控制層會複製到指定區域的多個可用區,但節點位於單一可用區,不會複製到其他可用區。

您可以使用 gcloud CLI、 Google Cloud 控制台或 Terraform 建立叢集。

如果您使用 Cloud Code for VS Code 開發 GKE 應用程式,請嘗試使用 Cloud Code 建立叢集。

gcloud

執行 gcloud CLI 指令建立叢集前,請先執行下列指令,設定正確的專案:

gcloud config set project PROJECT_ID
# gcloud config set billing/quota_project PROJECT_ID

如要使用 gcloud CLI 建立區域叢集,請使用下列其中一個指令,並替換下列變數:

  • CLUSTER_NAME:新區域叢集的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域。提供區域,例如 us-central1。
  • COMPUTE_ZONE:節點集區的區域,例如 us-central1-a。可用區必須與叢集控制層位於相同區域。
  • CHANNEL:發布管道的類型,可以是 rapid、regular、stable 或 None (已淘汰)。根據預設,叢集會註冊至 regular 發布管道。
  • VERSION:要為叢集指定的版本。

強烈建議您指定權限最小的 IAM 服務帳戶,供節點使用,而非 Compute Engine 預設服務帳戶。如要瞭解如何建立僅具備必要權限的服務帳戶,請參閱「使用最低權限的服務帳戶」。

如要在 gcloud CLI 中指定自訂服務帳戶,請在指令中加入下列旗標:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

將 SERVICE_ACCOUNT_NAME 替換為僅具備必要權限的服務帳戶名稱。

使用特定發布管道:

如要使用特定發布管道建立新叢集,請執行下列指令:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE \
    --release-channel CHANNEL

使用特定版本:

如要使用特定叢集版本建立新叢集,請執行下列指令:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE \
    --cluster-version VERSION

範例

下列指令會建立在 regular 發布管道 (預設) 註冊的區域叢集,並在 us-west1-c 可用區中建立三個節點 (預設):

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --node-locations us-west1-c

範例

下列指令會建立在 regular 發布管道 (預設) 註冊的區域叢集,其中兩個節點位於 us-west1-c 可用區:

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --node-locations us-west1-c \
    --num-nodes 2

控制台

  1. 前往 Google Cloud 控制台的「Create a Kubernetes cluster」(建立 Kubernetes 叢集) 頁面。

    前往「Create a Kubernetes cluster」(建立 Kubernetes 叢集)

  2. 在「叢集基本資訊」部分,完成下列操作:

    1. 輸入叢集的名稱。
    2. 在「位置類型」下方選取「區域」,然後為叢集選取區域。
    3. 如要覆寫預設節點位置 (例如在單一可用區中執行),請選取「指定預設節點位置」核取方塊,然後選擇要執行節點集區的可用區。

    4. 選擇發布版本。您也可以選取「No channel」(無管道),但這個設定選項已淘汰,日後將會移除。詳情請參閱「叢集未註冊任何發布版本」。

    5. 選用:從「版本」下拉式選單指定控制層版本。

  3. 選用:設定新叢集的其他設定。

  4. 選用:如要將新叢集註冊至機群,請前往「Advanced settings」(進階設定) 部分,然後按照 Google Cloud 控制台的「建立及註冊新叢集」操作說明,完成叢集註冊程序。

  5. 在導覽窗格的「Node Pools」(節點集區) 下方,點選「default-pool」。

  6. 在「節點集區詳細資料」部分,完成下列步驟:

    1. 輸入預設「節點集區」的「名稱」。
    2. 選用:選擇「Node version」(節點版本)。
    3. 輸入要在叢集中建立的「節點數量」。您必須有可用的資源配額,才能建立節點和相關資源 (例如防火牆路徑)。
    4. 選用:您可以選擇停用節點自動升級功能,但建議您先詳閱停用節點自動升級功能前的注意事項,再選擇這個選項。
  7. 在導覽窗格的「Node Pools」(節點集區) 下方,按一下「Nodes」(節點)。

  8. 在「Image type」(映像檔類型) 下拉式選單中,選取節點映像檔。

  9. 選擇要用於執行個體的預設「機器設定」。每種機器類型的計費方式不同。預設機型為 e2-medium。如需機型定價資訊,請參閱機型價目表。

  10. 從「Boot disk type」(開機磁碟類型) 下拉式清單中,選取磁碟類型。

  11. 輸入開機磁碟大小。

  12. 選用:在導覽窗格的「節點集區」下方,按一下「安全性」。

  13. 您可以選擇為節點指定自訂 IAM 服務帳戶:
    1. 在「進階設定」頁面中,展開「安全性」部分。
    2. 在「Service account」(服務帳戶) 選單中,選取偏好的服務帳戶。

    強烈建議您指定權限最小的 IAM 服務帳戶,供節點使用,而非 Compute Engine 預設服務帳戶。如要瞭解如何建立僅具備必要權限的服務帳戶,請參閱「使用最低權限的服務帳戶」。

  14. 點選「建立」。

Terraform

如要使用 Terraform 建立具有單一可用區節點集區的區域叢集,請參閱下列範例:

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-single-zone"
  location           = "us-west1"
  node_locations     = ["us-west1-c"]
  initial_node_count = 2
}

如要進一步瞭解如何使用 Terraform,請參閱「GKE 的 Terraform 支援」。

使用 kubectl 與叢集互動

建立叢集之後,您必須先設定 kubectl,才能透過指令列與叢集進行互動。

建立含有多可用區節點集區的區域叢集

下列操作說明說明如何建立具有多可用區節點集區的區域叢集,這是預設設定。叢集的控制層和節點會在指定區域的多個可用區中複製。

您可以使用 gcloud CLI、 Google Cloud 控制台或 Terraform 建立叢集。

如果您使用 Visual Studio Code 開發 GKE 應用程式,請嘗試使用 Cloud Code 建立叢集。

gcloud

執行 gcloud CLI 指令建立叢集前,請先執行下列指令,設定正確的專案:

gcloud config set project PROJECT_ID
# The project set above is used for quota and billing by default.
# To use a different project for quota and billing, run the following command:
# gcloud config set billing/quota_project PROJECT_ID

如要使用 gcloud CLI 建立區域叢集,請使用下列其中一個指令,並替換下列變數:

  • CLUSTER_NAME:新區域叢集的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域。提供區域,例如 us-central1。
  • CHANNEL:發布管道的類型,可以是 rapid、regular、stable 或 None (已淘汰)。根據預設,叢集會註冊至 regular 發布管道。
  • VERSION:要為叢集指定的版本。
  • 如果區域有三個以上的可用區,或您偏好較少的可用區,可以使用選用的 --node-locations 旗標,覆寫複製節點的預設可用區。

強烈建議您指定權限最小的 IAM 服務帳戶,供節點使用,而非 Compute Engine 預設服務帳戶。如要瞭解如何建立僅具備必要權限的服務帳戶,請參閱「使用最低權限的服務帳戶」。

如要在 gcloud CLI 中指定自訂服務帳戶,請在指令中加入下列旗標:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

將 SERVICE_ACCOUNT_NAME 替換為僅具備必要權限的服務帳戶名稱。

使用特定發布管道:

如要使用特定發布管道建立新叢集,請執行下列指令:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --release-channel CHANNEL

使用特定版本:

如要使用特定叢集版本建立新叢集,請執行下列指令:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --cluster-version VERSION

範例

下列指令會建立在 regular 發布管道註冊的區域叢集,並在 us-west1 中建立九個節點 (三個可用區,每個可用區有三個節點,這是預設值):

gcloud container clusters create my-regional-cluster --location us-west1

範例

下列指令會建立已註冊 regular 發布管道的區域叢集,其中包含六個節點 (三個可用區,每個可用區有兩個節點,由 --num-nodes 指定):

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --num-nodes 2

範例

下列指令會建立已註冊 regular 發布管道的區域叢集,並在兩個可用區中各加入六個節點 (由 --node-locations 指定兩個可用區,每個可用區各三個節點):

gcloud container clusters create my-regional-cluster \
    --location us-central1 \
    --node-locations us-central1-b,us-central1-c

控制台

  1. 前往 Google Cloud 控制台的「Create a Kubernetes cluster」(建立 Kubernetes 叢集) 頁面。

    前往「建立 Kubernetes 叢集」

  2. 在「叢集基本資訊」部分,完成下列操作:

    1. 輸入叢集的名稱。
    2. 在「位置類型」下方選取「區域」,然後為叢集選取區域。
    3. 如要覆寫預設節點位置 (例如在單一可用區中執行),請選取「指定預設節點位置」核取方塊,然後選擇要執行節點集區的可用區。

    4. 選擇發布版本。您也可以選取「No channel」(無管道),但這個設定選項已淘汰,日後將會移除。詳情請參閱「叢集未註冊任何發布版本」。

    5. 選用:從「版本」下拉式選單指定控制層版本。

  3. 選用:設定新叢集的其他設定。

  4. 選用:如要將新叢集註冊至機群,請前往「進階設定」部分,然後按照 Google Cloud 控制台操作說明建立及註冊新叢集,完成叢集註冊。

  5. 在導覽窗格的「Node Pools」(節點集區) 下方,按一下「default-pool」。

  6. 在「節點集區詳細資料」部分,完成下列步驟:

    1. 輸入預設節點集區的名稱。
    2. 選用:選擇 Node 版本。
    3. 輸入要在叢集中建立的節點數量。您必須具備節點及其資源 (例如防火牆路徑) 的可用資源配額。
    4. 選用:您可以選擇停用節點自動升級功能,但建議您先詳閱停用節點自動升級功能前的注意事項,再選擇這個選項。
  7. 在導覽窗格的「Node Pools」(節點集區) 下方,按一下「Nodes」(節點)。

  8. 從「Image type」(映像檔類型) 下拉式清單中,選取節點映像檔。

  9. 選擇要用於執行個體的預設「機器設定」。每種機器類型的計費方式不同。預設機型為 e2-medium。如需機型定價資訊,請參閱機型價目表。

  10. 從「Boot disk type」(開機磁碟類型) 下拉式選單中,選取磁碟類型。

  11. 輸入開機磁碟大小。

  12. 選用:在導覽窗格的「節點集區」下方,按一下「安全性」。

  13. 您可以選擇為節點指定自訂 IAM 服務帳戶:
    1. 在「進階設定」頁面中,展開「安全性」部分。
    2. 在「Service account」(服務帳戶) 選單中,選取偏好的服務帳戶。

    強烈建議您指定權限最小的 IAM 服務帳戶,供節點使用,而非 Compute Engine 預設服務帳戶。如要瞭解如何建立權限最小的服務帳戶,請參閱「使用最小權限服務帳戶」。

  14. 點選「建立」。

Terraform

如要使用 Terraform 建立具有多可用區節點集區的區域叢集,請參閱下列範例:

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-multi-zone"
  location           = "us-central1"
  node_locations     = ["us-central1-b", "us-central1-c"]
  initial_node_count = 2
}

如要進一步瞭解如何使用 Terraform,請參閱「GKE 的 Terraform 支援」。

使用 kubectl 與叢集互動

建立叢集之後,您必須先設定 kubectl,才能透過指令列與叢集進行互動。

後續步驟