使用 Arm 節點建立 Standard 叢集和節點集區

本文說明如何建立具有 Arm 節點的 GKE Standard 叢集或節點集區,以便在 Google Kubernetes Engine (GKE) 執行 Arm 工作負載。如要瞭解如何在 Autopilot 叢集上部署 Arm 工作負載,請參閱「在 Arm 架構上部署 Autopilot 工作負載」。

您可以使用 C4A、N4A 或 Tau T2A 機器系列建立含 Arm 節點的叢集。如要進一步瞭解 Arm 的優點,並為工作負載選擇最合適的機器系列,請參閱「Compute 上的 Arm VM」。

透過 GKE,您可以建立叢集,其中節點集區具有一種架構類型 (例如 Arm) 或多種架構類型 (例如 Arm 和 x86)。執行具有多種架構類型的節點時,您可以跨架構將工作負載部署至同一個叢集。

本文適用於佈建及設定雲端資源,並部署工作負載的運算子和開發人員。如要進一步瞭解常見角色,請參閱「常見的 GKE 使用者角色和工作」。

閱讀本文前,請先熟悉 GKE 上的 Arm 工作負載。

事前準備

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

  • 啟用 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. 前往「Welcome」(歡迎) 頁面:

    前往「歡迎」頁面

  2. 在「專案編號」欄位中,按一下「複製到剪貼簿」。
  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 替換為上一個步驟中的專案編號。

建立具有 Arm 節點集區的叢集

以下說明如何使用 C4A、N4A 或 Tau T2A 機器系列,建立執行 Arm 節點的節點集區。

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

gcloud

使用 Arm 節點建立新的可用區叢集,並採用預設節點集區:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations NODE_LOCATIONS \
    --machine-type ARM_MACHINE_TYPE \
    --num-nodes NUM_NODES

更改下列內容:

  • CLUSTER_NAME:新叢集的名稱,其中包含 Arm 節點集區。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。提供區域叢集的區域,或可用區叢集的可用區。所選區域或可用區必須是所選 Arm 機器系列的可用位置之一。
  • NODE_LOCATIONS:節點集區的可用區,例如 us-central1-a。您必須從 可用區中選擇,否則可能無法建立 Arm 機器系列或節點集區。
  • ARM_MACHINE_TYPE:可用的 C4A 機型、N4A 機型或 T2A 機型,例如 c4a-standard-8、n4a-standard-4 或 t2a-standard-16。
  • NUM_NODES:Arm 節點集區的節點數量。

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

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

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

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

如要為叢集設定其他設定,請參閱 gcloud container clusters create 參考資料,查看叢集建立時可用的完整設定清單。

控制台

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

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

  2. 設定叢集。詳情請參閱「建立區域叢集」或「建立區域叢集」的操作說明。

  3. 選擇提供 Arm 節點的位置。

    1. 在「叢集基本資訊」部分,於「位置類型」下方選擇「區域」或「區域性」:
    2. 在下拉式選單中,選擇提供 Arm 節點的區域或可用區。
    3. 勾選方塊,指定預設節點位置。選取提供 Arm 節點的可用區。
  4. 如要選取 Arm 機型,請在「節點」子區段中,依序選取「設定節點設定」>「機器設定」>「機器家族」,然後選取「一般用途」。在「系列」下拉式選單中,選取「C4A」、「N4A」或「T2A」。在「Machine type」(機型) 下拉式選單中,選擇可用的選項。

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

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

  6. 點選「建立」。

Terraform

如要使用 Terraform 建立具有預設節點集區的可用區叢集 (使用 Arm 節點),請參閱下列範例:

resource "google_container_cluster" "default" {
  name               = "gke-standard-zonal-arm-cluster"
  location           = "us-central1-a"
  node_locations     = ["us-central1-b", "us-central1-f"]
  initial_node_count = 2

  node_config {
    machine_type    = "t2a-standard-1"
    service_account = google_service_account.default.email
  }
}

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

將 Arm 節點集區新增至 GKE 叢集

您可以使用 gcloud CLI、 Google Cloud 控制台或 Terraform,將新的節點集區新增至 GKE Standard 叢集。

使用任何類型的節點建立 GKE 叢集時,最佳做法是建立並使用僅具備必要權限的 Identity and Access Management (IAM) 服務帳戶,供節點集區使用,而非 Compute Engine 預設服務帳戶。

如需建立僅具備必要權限的服務帳戶的操作說明,請參閱「強化叢集安全性」。

gcloud

將 Arm 節點集區新增至現有叢集:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations NODE_LOCATIONS \
    --machine-type ARM_MACHINE_TYPE \
    --num-nodes NUM_NODES \
    --service-account SERVICE_ACCOUNT

更改下列內容:

  • NODE_POOL_NAME:現有叢集的新 Arm 節點集區名稱。
  • CONTROL_PLANE_LOCATION:叢集控制層的 Compute Engine 位置。如果是區域叢集,請提供區域;如果是可用區叢集,請提供可用區。
  • CLUSTER_NAME:要新增 Arm 節點集區的叢集名稱。
  • NODE_LOCATIONS:節點集區的區域,例如 us-central1-a。您必須從 可用區中選擇,否則可能無法建立 Arm 機器系列或節點集區。
  • ARM_MACHINE_TYPE:可用的 C4A 機型、N4A 機型或 T2A 機型,例如 c4a-standard-8、n4a-standard-4 或 t2a-standard-16。
  • NUM_NODES:Arm 節點集區的節點數量。

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

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

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

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

如要為節點集區設定其他設定,請參閱 gcloud container node-pools create 參考資料,查看節點集區建立作業的所有可用設定。

控制台

如要將 Arm 節點集區新增至現有叢集,請按照下列步驟操作:

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

    前往「Google Kubernetes Engine」

  2. 在叢集清單中,按一下您要修改的叢集名稱。

  3. 按一下「Nodes」(節點) 分頁標籤。

  4. 按一下「建立由使用者管理的節點集區」。

  5. 設定節點集區。

  6. 選擇提供 Arm 節點的節點位置。

    1. 在「節點集區詳細資料」部分中,勾選「指定節點位置」方塊。
    2. 選取提供 Arm 節點的區域。
  7. 如要選取 Arm 機型,請在「節點」子部分中,依序選取「設定節點設定」>「機器設定」>「機器家族」,然後選取「GENERAL-PURPOSE」。在「系列」下拉式選單中,選取「C4A」、「N4A」或「T2A」。在「機型」下拉式選單中,從可用選項中選擇。

  8. 按一下導覽選單中的「Security」(安全性)。

  9. 如要為節點指定自訂 IAM 服務帳戶,請執行下列步驟:
    1. 在「進階設定」頁面中,展開「安全性」部分。
    2. 在「Service account」(服務帳戶) 選單中,選取偏好的服務帳戶。

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

  10. 按一下「Create」(建立),新增節點集區。

Terraform

如要使用 Terraform,將採用 Arm 節點的節點集區新增至現有叢集,請參考下列範例:

resource "google_container_node_pool" "default" {
  name           = "gke-standard-zonal-arm-node-pool"
  cluster        = google_container_cluster.default.id
  node_locations = ["us-central1-a"]
  node_count     = 1

  node_config {
    machine_type = "t2a-standard-1"

    service_account = google_service_account.default.email
  }
}

將 google_container_cluster.default.id 替換為叢集名稱。

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

後續步驟