本页面介绍了如何将工作负载放置在特定的 Compute Engine 机器系列上,以便在 Google Kubernetes Engine (GKE) Autopilot 集群中实现最佳工作负载性能。
确保您熟悉以下内容:
- Compute Engine 机器系列和应用场景
- 应用的内核级要求
机器系列选择的运作方式
您可以将 cloud.google.com/machine-family
节点选择器添加到 Pod 规范中,以便 Autopilot 为该 Pod 分配特定的 Compute Engine 硬件。例如,您可以为需要更强 CPU 的 Pod 选择 C3 机器系列,或为需要更多内存的 Pod 选择 N1 机器系列。Autopilot 会预配所选机器系列中的一个预定义机器类型,以最佳方式运行您的工作负载。
除了实现最佳 Pod 性能之外,选择特定的机器系列还具有以下优势:
高效的节点利用率:默认情况下,Autopilot 会通过在每个节点上尽可能多地调度请求同一机器系列的 Pod 来优化节点资源使用率。这种方法可优化节点上的资源使用率,从而提高性价比。如果您的工作负载需要访问节点上的所有资源,您可以视需要将工作负载配置为为每个节点请求一个 Pod。
可爆发的工作负载:您可以通过将资源限制设置为高于请求,将 Pod 配置为爆发使用节点上未使用资源容量。如需了解详情,请参阅在 GKE 中配置 Pod 爆发。
为每个 Pod 请求专用节点
如果您的 CPU 密集型工作负载需要稳定获取所有节点资源,可以视需要配置 Pod,以便 Autopilot 将请求机器系列的 Pod 放置在其自己的节点上。
当您运行大规模 CPU 密集型工作负载(例如 AI/机器学习训练工作负载或高性能计算 [HPC] 批量工作负载)时,建议每个 Pod 配专用节点。
在多 Pod 调度和单 Pod 调度之间进行选择
请按照以下指南,根据您的要求选择 Pod 调度行为:
- 如果您的 Pod 可以与其他 Pod 共享计算资源,或者您希望在专用硬件上运行 Pod 时优化成本,请使用每个节点配多个 Pod 的默认调度行为。
- 如果您的 Pod 需要稳定获取完整节点资源,或者您希望尽可能减少共享计算资源导致中断的可能性,请为每个 Pod 请求一个专用节点。
价格
Compute Engine 会向您收取底层虚拟机和任何挂接硬件的费用,同时收取 Autopilot 节点管理和可伸缩性附加费。如需了解详情,请参阅 GKE 价格。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
- 确保您已有运行 1.30.1-gke.1396000 版或更高版本的 Autopilot 集群。如需创建集群,请参阅创建 Autopilot 集群。
选择机器系列
本部分介绍如何在 Pod 中选择特定的 Compute Engine 机器系列。
将以下清单保存为
machine-series-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: machine-series-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 5 memory: "25Gi" limits: cpu: 20 memory: 100Gi
将
MACHINE_SERIES
替换为 Pod 的 Compute Engine 机器系列,例如c3
。如需查看支持的值,请参阅本页面中的支持的机器系列。部署 Pod:
kubectl apply -f machine-series-pod.yaml
借助此清单,Autopilot 可在有可用容量的情况下,高效地将选择同一机器系列的其他 Pod 调度到同一节点,从而优化节点资源使用率。
使用本地 SSD
如果您指定了提供本地 SSD 的机器系列,则选择机器系列的 Pod 可以将本地 SSD 用于临时存储空间。Autopilot 在为 Pod 选择 Compute Engine 机器类型时会考虑临时存储空间请求。
将以下清单保存为
local-ssd-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: local-ssd-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/gke-ephemeral-storage-local-ssd: "true" containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 6 memory: "25Gi" ephemeral: "100Gi" limits: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
将
MACHINE_SERIES
替换为还支持本地 SSD 的支持的机器系列。如果指定的机器系列不支持本地 SSD,部署将失败并显示错误。部署 Pod:
kubectl apply -f local-ssd-pod.yaml
为 Pod 请求专用节点
如果您的 Pod 有特定的性能要求,例如需要稳定获取节点的所有资源,您可以通过指定 cloud.google.com/compute-class: Performance
节点选择器以及机器系列节点选择器,为每个 Pod 请求专用节点。这会指示 Autopilot 将您的 Pod 放置在使用指定机器系列且专用于该 Pod 的新节点上。此节点选择器还可防止 Autopilot 将其他 Pod 调度到该节点上。
将以下清单保存为
dedicated-node-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: dedicated-node-pod spec: nodeSelector: cloud.google.com/machine-family: MACHINE_SERIES cloud.google.com/compute-class: Performance containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 12 memory: "50Gi" ephemeral: "200Gi"
将
MACHINE_SERIES
替换为也支持每节点调度一个 Pod 的支持的机器系列。如果指定的机器系列不支持每节点调度一个 Pod,部署将失败并显示错误。部署 Pod:
kubectl apply -f dedicated-node-pod.yaml
部署此清单时,Autopilot 会执行以下操作:
- 确保所部署 Pod 至少请求性能优化节点的最少资源。
- 计算所部署 Pod 和集群中任何 DaemonSet 的资源请求总量。
- 预配由所选机器系列提供支持的节点。
- 使用节点选择器和容忍组合修改 Pod 清单,以确保 Pod 在其自己的节点上运行。
支持的机器系列
machine-family
选择器支持以下机器系列:
(始终捆绑) |
如需比较这些机器系列及其应用场景,请参阅 Compute Engine 文档中的机器系列比较。
与其他 GKE 特性的兼容性
您使用的 Pod 可以选择具有以下 GKE 功能和特性的机器系列:
- Spot Pod
- 延长运行时间 Pod(仅适用于每个 Pod 都有专用节点的情况)
- 工作负载分离
- 容量预留
- 承诺使用折扣
Spot Pod 和扩展运行时 Pod 互斥。GKE 不会对每个节点都有专用 Pod 的情况强制执行更高的最少资源请求,即使它们使用工作负载分离也是如此。
GKE 如何选择机器类型
为了选择指定机器系列中的机器类型,GKE 会计算 Pod 以及在新节点上运行的任何 DaemonSet 的总 CPU、总内存和总临时存储空间请求数。GKE 将这些值向上舍入到支持所有这些总数的最接近的可用 Compute Engine 机器类型。
示例 1:假设具有四个副本的 Deployment 选择 C3D 机器系列。您无需为每个 Pod 请求专用节点。每个副本的资源请求如下所示:
- 500m vCPU
- 1 GiB 内存
Autopilot 将所有 Pod 放置在由
c3d-standard-4
机器类型支持的节点上,该机器类型具有 4 个 vCPU 和 16 GB 内存。示例 2:假设某个 Pod 选择
C3D
机器系列和本地 SSD 作为临时存储空间。您为 Pod 请求专用节点。包含 DaemonSet 的资源请求总数如下所示:- 12 vCPU
- 50 GiB 的内存
- 200 GiB 的临时存储空间
Autopilot 将 Pod 放置在使用
c3d-standard-16-lssd
机器类型的节点上,该机器类型具有 16 个 vCPU、64 GiB 内存和 365 GiB 本地 SSD 容量。
后续步骤
- 如需获得 Autopilot 针对各种应用场景提供的计算选项的相关指南,请参阅 Autopilot 中的计算类。
- 在 Autopilot 中部署基于 GPU 的工作负载。