在 GKE on AWS 中執行 Arm 工作負載

您可以在 GKE on AWS 中執行為 Arm 架構AWS Graviton 處理器建構的 Arm 工作負載。

限制

  • 如果 Arm 節點集區執行的 Kubernetes 版本早於 1.24.8-gke.1300,系統會在建立節點集區時自動新增 taint,防止 Arm 工作負載排程至非 Arm 節點。在 1.24.8-gke.1300 以上版本的叢集中,Arm 節點集區不再新增這個汙點。如果您要從 1.24.8-gke.1300 之前的叢集升級,就必須自行建立這個汙點,或在升級時將其納入考量。

  • AWS 上的 GKE 的 Arm 節點集區不支援 Cloud Service Mesh、Config Sync 或 Policy Controller。您必須在 x86 節點集區中執行這些產品。

  • 執行 Kubernetes 1.24 版的叢集需要 x86 節點集區,才能執行連線代理程式。如果叢集執行 Kubernetes 1.25 以上版本,則不需要 x86 節點集區。

本頁說明如何建立 Arm 節點集區、為何建議使用多架構映像檔部署 Arm 工作負載,以及如何排定 Arm 工作負載。

事前準備

為 Arm 工作負載建立節點集區之前,您需要下列資源:

  • 現有的 AWS 叢集,用於建立節點集區。這個叢集必須執行 Kubernetes 1.24 以上版本。
  • 節點集區 VM 的 IAM 執行個體設定檔
  • 節點集區 VM 執行的子網路
  • 如果叢集執行的是 Kubernetes 1.24 版,則需要 x86 節點集區來執行 Connect Agent

    如要瞭解如何在 AWS 上的 GKE 中建立節點集區,請參閱「建立節點集區」。

建立 Arm 節點集區

GKE on AWS 支援以 Canonical Ubuntu arm64 最低節點映像檔和 containerd 執行階段建構的節點集區。

如要建立 Arm 節點集區並新增至現有叢集,請執行下列指令:

gcloud container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --instance-type INSTANCE_TYPE \
    --root-volume-size ROOT_VOLUME_SIZE \
    --iam-instance-profile NODEPOOL_PROFILE \
    --node-version NODE_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --max-pods-per-node MAX_PODS_PER_NODE \
    --location GOOGLE_CLOUD_LOCATION \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN

更改下列內容:

  • NODE_POOL_NAME:您為節點集區選擇的名稱
  • CLUSTER_NAME:要將節點集區附加至的叢集名稱
  • INSTANCE_TYPE:下列其中一種執行個體類型:

    • m6g
    • m6gd
    • t4g
    • r6g
    • r6gd
    • c6g
    • c6gd
    • c6gn
    • x2gd
    • c7g
    • im4gn
    • g5g

      這些執行個體類型採用 Arm 架構的 AWS Graviton 處理器。您也需要指定所需的執行個體大小。例如:m6g.medium。如需完整清單,請參閱「支援的 AWS 執行個體類型」。

  • ROOT_VOLUME_SIZE:每個節點根磁碟區的所需大小 (單位為 Gb)

  • NODEPOOL_PROFILE:節點集區 VM 的 IAM 執行個體設定檔

  • NODE_VERSION:要在節點集區的每個節點上安裝的 Kubernetes 版本,必須是 1.24 以上版本。例如:1.24.3-gke.200

  • MIN_NODES:節點集區可包含的節點數量下限

  • MAX_NODES:節點集區可包含的節點數量上限

  • MAX_PODS_PER_NODE:可在集區中任何單一節點上建立的 Pod 數量上限

  • GOOGLE_CLOUD_LOCATION: Google Cloud的名稱

    管理這個節點集區的位置

  • NODEPOOL_SUBNET:節點集區將在其中執行的子網路 ID。如果這個子網路不在 VPC 的主要 CIDR 區塊中,您需要採取額外步驟。詳情請參閱安全性群組

  • SSH_KEY_PAIR_NAME:為 SSH 存取權建立的 AWS SSH 金鑰組名稱 (選用)

  • CONFIG_KMS_KEY_ARN:用於加密使用者資料的 AWS KMS 金鑰 Amazon Resource Name (ARN)

瞭解多架構映像檔

容器映像檔必須與您打算執行 Arm 工作負載的節點架構相容。為確保容器映像檔與 Arm 相容,建議您使用多架構 (「multi-arch」) 映像檔。

多架構映像檔是指支援多種架構的映像檔。這看起來像是具有單一標記的單一映像檔,但包含一組映像檔,可在不同的機器架構上執行。多架構映像檔與 Docker Image Manifest V2 Scheme 2 或 OCI Image Index 規格相容。

將多架構映像檔部署至叢集時,容器執行階段會自動選擇與部署節點架構相容的映像檔。為工作負載建立多重架構映像檔後,您就能在多個架構中部署這項工作負載。如果將單一架構映像檔排程至不相容的節點,載入時會發生錯誤。

如要進一步瞭解如何搭配使用多架構映像檔與 Arm 工作負載,請參閱 Google Kubernetes Engine (GKE) 說明文件中的「為 Arm 工作負載建構多架構映像檔」。

後續步驟