建立地區叢集


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

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,取得最新版本。

為 GKE 設定 IAM 服務帳戶

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

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

主控台

  1. 前往「歡迎」頁面:

    前往「歡迎」

  2. 在「專案編號」欄位中,按一下「複製到剪貼簿」
  3. 前往「IAM」(身分與存取權管理)IAM 頁面:

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

  4. 按一下「授予存取權」
  5. 在「New principals」(新增主體) 欄位中,指定下列值:
    PROJECT_NUMBER-compute@developer.gserviceaccount.com
    PROJECT_NUMBER 替換為您複製的專案編號。
  6. 在「Select a role」(選取角色) 選單中,選取「Kubernetes Engine Default Node Service Account」(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 建立區域叢集,請使用下列其中一個指令,並替換下列變數:

  • CLUSTER_NAME:新區域叢集的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域。提供區域,例如 us-central1
  • COMPUTE_ZONE:節點集區的區域,例如 us-central1-a。區域必須與叢集控制層位於相同地區。
  • CHANNEL發布版本的類型,可以是 rapidregularstableNone。除非指定下列至少一個旗標:--cluster-version--release-channel--no-enable-autoupgrade--no-enable-autorepair,否則叢集預設會註冊 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

為未在發布版本中註冊的叢集使用預設版本:

如要使用未註冊發布管道的叢集預設版本建立新叢集,您不需要指定叢集版本,但必須將發布管道設為 None

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

示例

下列指令會建立已註冊 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 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下「 Create」(建立)

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

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

    4. 選擇發布版本。 您可以視需要從下拉式清單中選取「沒有管道」, 但建議您先查看已註冊和未註冊發布管道的叢集比較結果, 再選擇這個選項。如果叢集未加入發布版本,GKE 會自動以穩定版升級叢集。

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

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

  5. 選用 (適用於 GKE Enterprise):如要將新叢集註冊至機群,請前往「機群註冊」部分,然後按照 Google Cloud 控制台的「建立及註冊新叢集」操作說明,完成叢集註冊程序。

  6. 在導覽窗格的「節點集區」下方,按一下「default-pool」

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

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

  9. 在「映像檔類型」下拉式清單中,選取節點映像檔

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

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

  12. 輸入開機磁碟大小

  13. 選用:在導覽窗格的「Node Pools」(節點集區) 下方,按一下「Security」(安全性)

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

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

  15. 點選「建立」

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 建立區域叢集,請使用下列其中一個指令,並替換下列變數:

  • CLUSTER_NAME:新區域叢集的名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 區域。提供區域,例如 us-central1
  • CHANNEL發布版本的類型,可以是 rapidregularstableNone。如果未指定下列標記,叢集預設會註冊 regular 發布管道:--cluster-version--release-channel--no-enable-autoupgrade--no-enable-autorepair
  • 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

為未在發布版本中註冊的叢集使用預設版本:

如要使用未註冊發布管道的叢集預設版本建立新叢集,您不需要指定叢集版本,但必須將發布管道設為 None

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

示例

下列指令會建立已註冊 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 控制台的「Google Kubernetes Engine」頁面。

    前往「Google Kubernetes Engine」

  2. 按一下「 Create」(建立)

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

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

    4. 選擇發布版本。 您可以視需要從下拉式清單中選取「沒有管道」, 但建議您先查看已註冊和未註冊發布管道的叢集比較結果, 再選擇這個選項。如果叢集未加入發布版本,GKE 會自動以穩定版升級叢集。

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

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

  5. 選用 (適用於 GKE Enterprise):如要將新叢集註冊至機群,請前往「機群註冊」部分,然後按照 Google Cloud 控制台的「建立及註冊新叢集」操作說明,完成叢集註冊程序。

  6. 在導覽窗格的「節點集區」下方,按一下「default-pool」

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

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

  9. 在「映像檔類型」下拉式清單中,選取節點映像檔

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

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

  12. 輸入開機磁碟大小

  13. 選用:在導覽窗格的「Node Pools」(節點集區) 下方,按一下「Security」(安全性)

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

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

  15. 點選「建立」

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,才能透過指令列與叢集進行互動。

後續步驟