本文档介绍如何创建具有 Arm 节点的 GKE 标准集群或节点池,以便在 Google Kubernetes Engine (GKE) 上运行 Arm 工作负载。如需了解如何在 Autopilot 集群上部署 Arm 工作负载,请参阅在 Arm 架构上部署 Autopilot 工作负载。
您可以使用 C4A、N4A 或 Tau T2A 机器系列创建具有 Arm 节点的集群。如需详细了解 Arm 的优势以及如何为您的工作负载选择最佳机器系列,请参阅计算上的 Arm 虚拟机。
利用 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 可能不支持运行本文档中的命令。
- 查看 C4A、N4A 和 T2A 节点的要求和限制。
- 确保您拥有创建集群的必要权限。您至少应是 Kubernetes Engine Cluster Admin。
为 GKE 设置 IAM 服务账号
GKE 使用关联到节点的 IAM 服务账号来运行日志记录和监控等系统任务。这些节点服务账号必须至少拥有项目的 Kubernetes Engine Default Node Service Account (roles/container.defaultNodeServiceAccount) 角色。默认情况下,GKE 会将 Compute Engine 默认服务账号(在您的项目中自动创建)用作节点服务账号。
如需向 Compute Engine 默认服务账号授予 roles/container.defaultNodeServiceAccount 角色,请完成以下步骤:
控制台
gcloud
- 找到您的 Google Cloud 项目编号:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
将
PROJECT_ID替换为您的项目 ID。输出类似于以下内容:
12345678901
- 将
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 参考文档,了解创建集群时的可用设置的完整列表。
控制台
在 Google Cloud 控制台中,前往创建 Kubernetes 集群页面。
选择可使用 Arm 节点的位置。
- 在集群基本信息部分中的位置类型下,选择“可用区级”或“区域级”:
- 在下拉菜单中,选择可使用 Arm 节点的可用区或区域。
- 勾选指定默认节点位置对应的复选框。选择可使用 Arm 节点的可用区。
如需选择 Arm 机器类型,请在节点子部分的配置节点设置 > 机器配置 > 机器系列下,选择通用。在系列下拉菜单中,选择 C4A、N4A 或 T2A。在机器类型下拉菜单中,选择适用的选项。
- (可选)为节点指定自定义 IAM 服务账号:
- 在高级设置页面中,展开安全部分。
- 在服务账号菜单中,选择您想使用的服务账号。
我们强烈建议您指定节点可以使用的具有最低权限的 IAM 服务账号,而不是 Compute Engine 默认服务账号。如需了解如何创建具有最低权限的服务账号,请参阅使用最小权限服务账号。
点击创建。
Terraform
如需使用 Terraform 创建具有使用 Arm 节点的默认节点池的可用区级集群,请参阅以下示例:
如需详细了解如何使用 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 节点池添加到现有集群,请执行以下步骤:
前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
在集群列表中,点击您要修改的集群的名称。
点击节点标签页。
点击 add_box 创建由用户管理的节点池。
配置节点池。
选择可使用 Arm 节点的节点位置。
- 在节点池详情部分中,勾选指定节点位置复选框。
- 选择可使用 Arm 节点的可用区。
如需选择 Arm 机器类型,请在节点子部分的配置节点设置 > 机器配置 > 机器系列下,选择通用。在系列下拉菜单中,选择 C4A、N4A 或 T2A。 在机器类型下拉菜单中,选择适用的选项。
在导航菜单中,点击安全。
- (可选)为节点指定自定义 IAM 服务账号:
- 在高级设置页面中,展开安全部分。
- 在服务账号菜单中,选择您想使用的服务账号。
我们强烈建议您指定节点可以使用的具有最低权限的 IAM 服务账号,而不是 Compute Engine 默认服务账号。如需了解如何创建具有最低权限的服务账号,请参阅使用最小权限服务账号。
点击创建以添加节点池。
Terraform
如需使用 Terraform 将使用 Arm 节点的节点池添加到现有集群,请参阅以下示例:
将 google_container_cluster.default.id 替换为您的集群名称。
如需详细了解如何使用 Terraform,请参阅针对 GKE 的 Terraform 支持。