使用 Arm 節點建立標準叢集和節點集區


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

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

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

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

閱讀本頁內容前,請先熟悉 GKE 中的 Arm 工作負載

事前準備

開始之前,請確認你已完成下列工作:

  • 啟用 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 替換為上一步的專案編號。

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

下列操作說明將介紹如何建立新叢集,並從 C4A 系列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 機型T2A 機型,例如 c4a-standard-8t2a-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 控制台中,前往「建立 Kubernetes 叢集」頁面。

    前往「建立 Kubernetes 叢集」

  2. 設定叢集。詳情請參閱建立區域叢集建立地區叢集的相關說明。

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

    1. 在「叢集基本資訊」專區中,於「位置類型」下方選擇「區域」或「地區」:
    2. 在下拉式選單中,選擇提供 Arm 節點的區域或地區
    3. 勾選「指定預設節點位置」方塊。選取提供 Arm 節點的區域
  4. 如要選取 Arm 機器類型,請在「Nodes」(節點) 子部分中,依序選取「Configure node settings」(設定節點設定) >「Machine configuration」(機器設定) >「Machine family」(機器系列),然後選取「GENERAL-PURPOSE」(一般用途)。在「系列」下拉式選單中,選取 C4A 或 T2A。在「機型」下拉式選單中,從可用選項中選擇。

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

    強烈建議您指定權限最小的 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 機型T2A 機型,例如 c4a-standard-8t2a-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. 按一下 「Add node pool」(新增節點集區)

  4. 設定節點集區。

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

    1. 在「節點集區詳細資料」部分,勾選「指定節點位置」方塊。
    2. 選取提供 Arm 節點的區域
  6. 如要選取 Arm 機器類型,請在「Nodes」(節點) 子區段中,依序選取「Configure node settings」(設定節點設定) >「Machine configuration」(機器設定) >「Machine family」(機器系列),然後選取「GENERAL-PURPOSE」(一般用途)。在「系列」下拉式選單中,選取 C4A 或 T2A。 在「機器類型」下拉式選單中,選擇可用的選項。

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

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

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

  9. 按一下「建立」即可新增節點集區。

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 支援」。

後續步驟