本页面介绍如何指示 Google Kubernetes Engine (GKE) 将每个 Pod 放置在其自己的节点上,以优化 CPU 密集型工作负载的性能,从而拥有对该节点的所有资源的完全访问权限。如需使用此 Pod 放置模型,请在 Autopilot 工作负载中请求性能计算类。
性能计算类的优势
当您运行可能需要访问底层虚拟机 (VM) 功能的大规模 CPU 密集型工作负载时,每个 Pod 的专用节点都是理想之选。例如,CPU 密集型 AI/机器学习训练工作负载或高性能计算 (HPC) 批量工作负载。
这些专用节点上的 Pod 具有以下优势:
- 可预测的性能:随时访问所有节点资源。
- 可爆发的工作负载:如果您未在清单中设置资源限制,则性能类 Pod 可能会爆发到节点上的所有未使用容量,且将 Kubernetes 节点压力逐出风险降至最低。
性能类 Pod 的工作原理
您部署了一个具有以下特征的 Pod:
- 选择性能类和 Compute Engine 机器系列
- 指定资源请求量,理想情况下不指定资源限制
GKE 会执行以下操作:
- 确保所部署 Pod 至少请求计算类的最少资源
- 计算所部署 Pod 和集群中任何 DaemonSet 的资源请求总量
- 预配由所选机器系列支持的节点
- 使用节点选择器和容忍设置的组合修改 Pod 清单,以确保 Pod 在其自己的节点上运行
与其他 GKE 特性的兼容性
您可以将性能类 Pod 与以下 GKE 功能和特性搭配使用:
Spot Pod 和扩展运行时 Pod 互斥。GKE 不会对使用工作负载分离的性能类 Pod 强制执行更高的最少资源请求。
价格
您的 Pod 可以随时使用整个底层虚拟机和任何挂接的硬件,并且 Compute Engine 会向您收取此硬件的费用,同时提供 Autopilot 节点管理和可伸缩性附加费。如需了解详情,请参阅 GKE 价格。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
- 确保您熟悉以下内容:
- Compute Engine 机器系列和应用场景
- 应用的内核级要求
- 确保您已有运行 1.28.6-gke.1369000 版及更高版本或 1.29.1-gke.1575000 版及更高版本的 Autopilot 集群。如需创建集群,请参阅创建 Autopilot 集群。
连接到集群
使用 Google Cloud CLI 连接到 Autopilot 集群:
gcloud container clusters get-credentials CLUSTER_NAME \
--location=LOCATION
替换以下内容:
CLUSTER_NAME
:您的集群的名称。LOCATION
:集群的 Compute Engine 位置。
部署性能类 Pod
将以下清单保存为
perf-class-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: performance-pod spec: nodeSelector: cloud.google.com/compute-class: Performance cloud.google.com/machine-family: MACHINE_SERIES containers: - name: my-container image: "k8s.gcr.io/pause" resources: requests: cpu: 20 memory: "100Gi"
将
MACHINE_SERIES
替换为 Pod 的 Compute Engine 机器系列,例如c3
。如需查看支持的值,请参阅本文档中的支持的机器系列。部署 Pod:
kubectl apply -f perf-class-pod.yaml
在性能类 Pod 中使用本地 SSD
如果您选择包含本地 SSD 的机器系列,则性能类 Pod 可以将本地 SSD 用于临时存储。在为性能类 Pod 预配节点时,GKE 会考虑临时存储请求。
将以下清单保存为
perf-class-ssd-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: performance-pod spec: nodeSelector: cloud.google.com/compute-class: Performance 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: 12 memory: "50Gi" ephemeral: "200Gi"
将
MACHINE_SERIES
替换为还支持本地 SSD 的支持的机器系列。如果指定的机器系列不支持本地 SSD,部署将失败并显示错误。部署 Pod:
kubectl apply -f perf-class-pod.yaml
支持的机器系列
性能计算类支持以下机器系列:
- C3 机器系列:
c3
(本地 SSD 可用) - C3D 机器系列:
c3d
(本地 SSD 可用) - H3 机器系列:
h3
- C2 机器系列:
c2
- C2D 机器系列:
c2d
- T2D 机器系列:
t2d
- T2A 机器系列:
t2a
如需比较这些机器系列及其应用场景,请参阅 Compute Engine 文档中的机器系列比较。
GKE 如何选择机器大小
为了选择指定机器系列中的机器大小,GKE 会计算性能类 Pod 以及在新节点上运行的任何 DaemonSet 的总 CPU、总内存和总临时存储请求数。GKE 将这些值向上舍入到支持所有这些总数的最接近的可用 Compute Engine 机器类型。
示例 1:假设某个性能类 Pod 选择
C3
机器系列。包含 DaemonSet 的资源请求总数如下所示:- 70 vCPU
- 200 GiB 的内存
GKE 将 Pod 放置在由
c3-standard-88
机器类型支持的节点上,该机器类型具有 88 个 vCPU 和 352 GB 内存。示例 2:假设某个性能类 Pod 选择
C3D
机器系列和本地 SSD 作为临时存储空间。包含 DaemonSet 的资源请求总数如下所示:- 12 vCPU
- 50 GiB 的内存
- 200 GiB 的临时存储空间
GKE 将 Pod 放置在使用
c3d-standard-16-lssd
机器类型的节点上,该机器类型具有 16 个 vCPU、64 GiB 内存和 365 GiB 本地 SSD 容量。