第 16 章 工作负载分区
工作负载分区将计算节点 CPU 资源划分为不同的 CPU 集。主要目标是将平台 pod 保留在指定的内核中,以避免中断客户工作负载的 CPU。
使用工作负载分区隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。这样可确保集群部署中剩余的 CPU 没有被修改,并只可用于非平台工作负载。集群管理所需的最小保留 CPU 数量是 4 个 CPU Hyper-Threads (HT)。
在启用工作负载分区和管理 CPU 资源的情况下,没有正确配置的节点不允许通过节点准入 Webhook 加入集群。启用工作负载分区功能时,control plane 和 worker 的机器配置池将提供要使用的节点配置。向这些池添加新节点可确保在加入集群前正确配置它们。
目前,每个机器配置池必须具有统一配置,以确保在该池中的所有节点中正确设置了正确的 CPU 关联性。准入后,集群中的节点将自己识别为支持名为 management.workload.openshift.io/cores
的新资源类型,并准确报告其 CPU 容量。工作负载分区只能在集群安装过程中启用,方法是将额外的字段 cpuPartitioningMode
添加到 install-config.yaml
文件中。
启用工作负载分区后,management.workload.openshift.io/cores
资源允许调度程序根据主机的 cpushares
容量正确分配 pod,而不只是默认的 cpuset
。这样可确保为工作负载分区场景更精确地分配资源。
工作负载分区确保 pod 配置中指定的 CPU 请求和限值被遵守。在 OpenShift Container Platform 4.16 或更高版本中,通过 CPU 分区为平台 pod 设置准确的 CPU 用量限制。因为工作负载分区使用 management.workload.openshift.io/cores
的自定义资源类型,因此请求和限制的值相同,因为 Kubernetes 对扩展资源的要求相同。但是,工作负载分区修改的注解可以正确地反映所需的限制。
扩展资源无法过量使用,因此如果容器规格中存在扩展资源,则请求和限制必须相等。
16.1. 启用工作负载分区
使用工作负载分区时,集群管理 pod 被标注,以便将其正确分区到指定的 CPU 关联性中。这些 pod 通常在 Performance Profile 中保留值指定的最小大小 CPU 配置内运行。在计算应该为平台设置多少个保留 CPU 内核时,应考虑使用工作负载分区的额外第 2 天 Operator。
工作负载分区使用标准 Kubernetes 调度功能将用户工作负载与平台工作负载隔离。
工作负载分区只能在集群安装过程中启用。您不能在安装后禁用工作负载分区。
使用这个流程在集群范围内启用工作负载分区:
流程
在
install-config.yaml
文件中,添加额外的cpuPartitioningMode
字段,并将其设置为AllNodes
。apiVersion: v1 baseDomain: devcluster.openshift.com cpuPartitioningMode: AllNodes 1 compute: - architecture: amd64 hyperthreading: Enabled name: worker platform: {} replicas: 3 controlPlane: architecture: amd64 hyperthreading: Enabled name: master platform: {} replicas: 3
- 1
- 在安装时为 CPU 分区设置集群。默认值为
None
。