GKE on AWS 可让您运行为基于 Arm 的 AWS Graviton 处理器构建的 Arm 工作负载。
限制
运行版本低于 1.24.8-gke.1300 的 Kubernetes 的 Arm 节点池在创建节点池期间会自动添加污点,以防止 Arm 工作负载被调度到非 Arm 节点上。1.24.8-gke.1300 版或更高版本的集群中的 Arm 节点池不再添加此污点。如果您要从低于 1.24.8-gke.1300 的集群升级,您必须自行创建此污点,否则请在升级时考虑这一点。
GKE on AWS 上的 Arm 节点池不支持 Cloud Service Mesh、Config Sync 或 Policy Controller。您必须在 x86 节点池上运行这些产品。
运行 Kubernetes 1.24 版的集群需要 x86 节点池来运行 Connect Agent。如果集群运行的是 Kubernetes 1.25 版或更高版本,则不需要 x86 节点池。
本页面介绍了如何创建 Arm 节点池、多架构映像是部署 Arm 工作负载的推荐方法的原因,以及如何调度 Arm 工作负载。
准备工作
在为 Arm 工作负载创建节点池之前,您需要准备以下资源:
- 要在其中创建节点池的现有 AWS 集群。此集群必须运行 Kubernetes 1.24 版或更高版本。
- 适用于节点池虚拟机的 IAM 实例配置文件
- 节点池虚拟机将在其中运行的子网。
如果集群运行的是 Kubernetes 1.24 版,则需要 x86 节点池来运行 Connect Agent。
如需详细了解如何在 GKE on AWS 中创建节点池,请参阅创建节点池。
创建 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
:适用于节点池虚拟机的 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 兼容,我们建议您使用多架构映像。
多架构映像是一种可以支持多个架构的映像。它看起来像具有单个标记的单个映像,但实际包含一组要在不同机器架构上运行的映像。多架构映像与 Docker Image Manifest V2 Scheme 2 或 OCI 映像索引规范兼容。
将多架构映像部署到集群时,容器运行时会自动选择与所部署到的节点的架构兼容的映像。将多架构映像用于工作负载后,您可以跨多个架构部署此工作负载。将单架构映像调度到不兼容的节点上会在加载时导致错误发生。
如需详细了解如何将多架构映像用于 Arm 工作负载,请参阅 Google Kubernetes Engine (GKE) 文档中的为 Arm 工作负载构建多架构映像。