Google Kubernetes Engine (GKE) 为高性能计算 (HPC) 工作负载提供了一个高性能、可伸缩的平台。为了实现高性能和运营效率,您可以使用 GKE 提供的针对工作负载优化的基础架构,例如 HPC 专用虚拟机系列。本文档概述了管理基础架构和工作负载的最佳实践,以优化在 GKE 上运行 HPC 应用。
如需全面了解所有 GKE 最佳实践,请参阅 GKE 最佳实践。基础设施和节点配置
本部分介绍了针对 HPC 工作负载配置底层基础架构和 GKE 节点的最佳实践。
为计算密集型工作负载选择 H4D 虚拟机
为您的应用选择合适的硬件。H4D 虚拟机旨在最大限度地提高计算密集型 HPC 应用的吞吐量。H4D 虚拟机可为多节点工作负载提供高性能、低成本和可伸缩性。H4D 属于计算优化机器家族,该家族提供计算优化型实例,非常适合计算密集型工作负载和 HPC。
如需详细了解 H4D 机器系列,请参阅计算优化机器家族:H4D 机器系列。
如需有关创建 HPC 优化型 GKE 集群的说明,请参阅使用 H4D 运行高性能计算工作负载。
考虑节点可分配资源
了解节点的总资源容量与可分配给工作负载的资源之间的区别。GKE 节点运行系统组件(例如 kubelet 和容器运行时),这些组件需要资源才能正常运行。GKE 会为系统功能和节点可靠性预留预定义的资源数量。了解工作负载的实际资源分配量(虚拟机大小减去 GKE 预留的容量)有助于您为 HPC 工作负载合理调整资源请求的大小。
如需了解详情,请参阅以下资源:
- GKE 文档中关于规划节点大小:检查节点上的可分配资源。
- 有关为系统守护程序预留计算资源的 Kubernetes 文档。
预留核心以缓解抢占问题
如果工作负载使用节点上可供其使用的所有物理核心,则可能会与对延迟时间敏感的系统守护进程竞争。这种争用可能会导致频繁抢占,即操作系统调度程序中断 HPC 工作负载以执行系统任务,从而降低性能。
为保持性能,请避免将所有可用的 CPU 分配给工作负载。基本系统进程需要少量 CPU 开销才能正常运行。将 100% 的计算容量分配给工作负载会导致这些系统组件出现资源争用,从而降低性能。例如,对于 H4D 机器类型,为了保持性能,请将工作负载配置为使用少于 192 个 CPU。
集群和工作负载配置
本部分介绍了配置 GKE 集群和部署 HPC 工作负载的最佳实践。
使用 Cluster Toolkit 创建集群
使用 Cluster Toolkit 简化 GKE 上 HPC 工作负载的部署和管理。该工具包提供了参考设计蓝图,其中纳入了在高性能环境中配置计算、存储和网络资源的最佳实践。
如需了解如何使用 Cluster Toolkit 创建 H4D 集群,请参阅使用 H4D 运行高性能计算工作负载。
使用灵活启动进行容量管理
对于突发性(动态)或对时间不敏感的 HPC 工作负载,当 H4D 按需容量或预留容量不可用时,请使用灵活启动来增强容量管理。灵活启动可管理 H4D 节点的生命周期,并有助于满足突发或时效性强的资源需求。
如需了解详情,请参阅创建具有灵活启动功能的 H4D 集群。
为紧密耦合的工作负载使用紧凑布置政策
为对延迟时间敏感的紧密耦合型 HPC 工作负载实现紧凑布置政策。此政策有助于确保所有 Pod 在宿主机上彼此靠近地进行配置。此配置可最大限度地减少节点间的网络延迟,这对于依赖节点间通信的应用至关重要。
如果您按照使用 H4D 运行高性能计算工作负载中所述使用 gcloud CLI 创建 H4D 集群,GKE 会自动配置紧凑布置政策。如果您使用的是 Cluster Toolkit,系统也会自动配置此政策。如果您想为其他节点类型手动配置紧凑放置,请参阅为 GKE 节点定义紧凑放置。
设置适当的资源请求
在确定 HPC 作业的大小之前,请检查节点上实际可分配的 CPU。使用 kubectl get node 命令查看可分配的资源。确保作业的 CPU 要求不会超出 GKE 在预留 GKE 系统资源后可用的 CPU 资源。
GKE 提供了多项功能,可帮助您分析和自动调整资源请求。如需了解详情,请先参阅识别资源配置不足和资源配置过多的工作负载。
将整个节点专用于单个工作负载
将 MPI 作业配置为占用整个 H4D 节点。H4D 实例以全主机虚拟机的形式预配。此策略会预留节点的大部分容量,确保工作负载得到隔离。使用容器资源请求或 Pod 反亲和性来帮助确保副本不会登录到同一物理节点。
为 H4D 虚拟机启用 Cloud RDMA 以实现高速网络
如果您使用 H4D 虚拟机,请配置部署清单,以便为 Pod 启用 Cloud RDMA。此配置有助于确保高速 RDMA 网络接口正确公开给容器化工作负载。如需查看相关说明,请参阅为 RDMA 配置清单。
最佳做法摘要
下表总结了本文档中建议的最佳做法。
| 主题 | 任务 |
|---|---|
| 基础设施和节点配置 | 为计算密集型工作负载选择 H4D 虚拟机 |
| 基础设施和节点配置 | 考虑节点可分配资源 |
| 基础设施和节点配置 | 预留核心以缓解抢占问题 |
| 集群和工作负载配置 | 使用 Cluster Toolkit 创建集群 |
| 集群和工作负载配置 | 使用灵活启动进行容量管理 |
| 集群和工作负载配置 | 为紧密耦合的工作负载使用紧凑布置政策 |
| 集群和工作负载配置 | 设置适当的资源请求 |
| 集群和工作负载配置 | 将整个节点专用于单个工作负载 |
| 集群和工作负载配置 | 为 H4D 虚拟机启用 Cloud RDMA 以实现高速网络 |