创建 AI 优化型 Google Kubernetes Engine (GKE) 集群后,您可以启用节点健康状况预测。如果您计划使用拓扑感知调度 (TAS) 和 Kueue 调度工作负载,那么启用节点健康状况预测功能可让集群的调度程序执行以下操作:
确定可能在未来 5 小时内性能下降的节点。
避免在这些节点上调度新工作负载。
这种方法有助于最大限度地减少对关键工作负载和对中断敏感的工作负载(例如大规模训练工作负载)的中断。
本文档介绍了如何在采用 A4X Max、A4X、A4 或 A3 Ultra 节点的 GKE 集群中启用节点健康状况预测功能。如需了解如何在 Cloud Monitoring 信息中心内使用节点健康状况预测指标(例如,当您想要排查 Slurm 集群的性能问题时),请参阅监控 Compute Engine 实例和 Slurm 集群。
限制
在 GKE 集群中启用节点健康状况预测之前,请考虑以下限制:
节点必须使用 A4X Max、A4X、A4 或 A3 Ultra 机器类型。
节点必须使用受预留约束的预配模型。
了解节点健康状况预测
在 GKE 集群中启用节点健康状况预测功能后,CronJob 会将 gke.google.com/recommended-to-run-large-training-workload 标签应用于集群中的每个节点。CronJob 会将标签值设置为节点 GPU 健康状况下降的可能性,并每 10 分钟更新一次这些值。如果标签值为 true,则节点健康状况良好。否则,如果标签值为 false,则节点可能会在未来 5 小时内降级。标签值可能会随时间变化,具体取决于节点的 GPU 健康状况。
如果您发现某个节点可能出现性能下降,可以执行以下一项或两项操作:
避免在节点上调度工作负载。您可以配置 Kueue 以避免在显示值为
false的节点上调度工作负载,如本文档中所述。将节点报告为有故障。如果节点遇到 GPU 温度过高或性能缓慢等问题,您可以将该节点报告为有故障。此操作会为节点启动主机维护事件,使节点在维护完成后再次可用于运行工作负载。如需了解相关说明,请参阅通过 GKE 报告故障主机。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请通过运行
gcloud components update命令来获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。
如需连接到集群,请运行以下命令:
gcloud container clusters get-credentials CLUSTER_NAME将
CLUSTER_NAME替换为您的集群名称。
启用节点健康状况预测
准备好使用 TAS 在 GKE 集群上调度工作负载后,您可以完成以下步骤来启用节点健康状况预测:
部署自动节点标签
如需在 GKE 集群中部署自动节点标签,以实现节点健康状况预测,请完成以下步骤:
克隆 GKE 中的硬件加速器 Git 代码库:
git clone https://github.com/GoogleCloudPlatform/container-engine-accelerators.git转到
topology-scheduler目录:cd container-engine-accelerators/gpudirect-tcpxo/topology-scheduler创建包含用于查询健康得分的 Python 脚本
schedule-daemon.py和label-nodes-daemon.py的 Kubernetes ConfigMap:kubectl create configmap predictor-scheduler-scripts \ --namespace=kube-system \ --from-file=schedule-daemon.py=schedule-daemon.py \ --from-file=label-nodes-daemon.py=label-nodes-daemon.py应用服务账号配置,以向 CronJob 授予必要的权限(读取 Monitoring 指标和修补节点对象):
kubectl apply -f service-account.yaml部署用于调度节点标签作业的 DaemonSet:
kubectl apply -f label-nodes-daemon.yaml
更新作业配置
如需在使用 Kueue 时启用节点健康状况预测,您必须更新作业配置,以在启动工作负载之前检查健康状况预测值和(如果支持)拓扑要求。
如需更新作业配置并启用节点健康状况预测,请在 spec 字段中添加以下字段:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: gke.google.com/recommended-to-run-large-training-workload
operator: NotIn
values:
- "False"
...
验证节点标签
在 CronJob 首次运行(大约在部署后 10 分钟)后,验证它是否已将 gke.google.com/recommended-to-run-large-training-workload 标签应用于您的节点。
查看已应用 gke.google.com/recommended-to-run-large-training-workload 标签的节点列表:
kubectl get nodes -L gke.google.com/recommended-to-run-large-training-workload
标签值可以是以下值之一:
true:预计节点在未来 5 小时内健康状况良好。false:节点很可能会在未来 5 小时内降级。如果您按照本文档中的说明配置了作业配置,则 Kueue 会避免在节点上调度新工作负载。
后续步骤
如需了解如何管理与 GKE 集群和 AI 工作负载相关的常见事件,请参阅管理 AI 优化型 GKE 集群。
如需详细了解如何使用 Kueue 在 GKE 上调度作业,请参阅使用 Kueue 部署批处理系统。