您可以在 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 資源名稱 (ARN)
瞭解多架構映像檔
容器映像檔必須與您打算執行 Arm 工作負載的節點架構相容。為確保容器映像檔與 Arm 相容,建議您使用多架構 (「multi-arch」) 映像檔。
多架構映像檔是指可支援多種架構的映像檔。這看起來像是具有單一標記的單一映像檔,但包含一組映像檔,可在不同的機器架構上執行。多重架構映像檔與 Docker Image Manifest V2 Scheme 2 或 OCI Image Index 規格相容。
將多架構映像檔部署至叢集時,容器執行階段會自動選擇與部署節點架構相容的映像檔。為工作負載建立多重架構映像檔後,您就能在多個架構中部署這項工作負載。如果將單一架構映像檔排程至不相容的節點,載入時會發生錯誤。
如要進一步瞭解如何搭配使用多架構映像檔與 Arm 工作負載,請參閱 Google Kubernetes Engine (GKE) 說明文件中的「為 Arm 工作負載建構多架構映像檔」。