第 17 章 工作负载分区
工作负载分区只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
在资源受限环境中,您可以使用工作负载分区来隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。
集群管理所需的最小保留 CPU 数量是 4 个 CPU Hyper-Threads (HT)。使用工作负载分区,您可以注解一组集群管理 pod 和一组典型的附加 Operator,以包含在集群管理工作负载分区中。这些 pod 通常在大小为最小要求的 CPU 配置中运行。除了最小集群管理 pod 之外,额外的其他 Operator 或工作负载则需要将额外的 CPU 添加到工作负载分区中。
工作负载分区使用标准 Kubernetes 调度功能将用户工作负载与平台工作负载隔离。
工作负载分区需要以下更改:
在
install-config.yaml
文件中,添加额外的字段:cpuPartitioningMode
。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
。
注意工作负载分区只能在集群安装过程中启用。您不能在安装后禁用工作负载分区。
在性能配置集中,指定
isolated
和reserved
CPU。推荐的性能配置集配置
apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: openshift-node-performance-profile spec: additionalKernelArgs: - "rcupdate.rcu_normal_after_boot=0" - "efi=runtime" - "module_blacklist=irdma" cpu: isolated: 2-51,54-103 reserved: 0-1,52-53 hugepages: defaultHugepagesSize: 1G pages: - count: 32 size: 1G node: 0 machineConfigPoolSelector: pools.operator.machineconfiguration.openshift.io/master: "" nodeSelector: node-role.kubernetes.io/master: '' numa: topologyPolicy: "restricted" realTimeKernel: enabled: true workloadHints: realTime: true highPowerConsumption: false perPodPowerManagement: false
表 17.1. 单节点 OpenShift 集群的 PerformanceProfile CR 选项 PerformanceProfile CR 字段 描述 metadata.name
确保
名称
与相关 GitOps ZTP 自定义资源(CR)中设置的以下字段匹配:-
TunedPerformancePatch.yaml
中的include=openshift-node-performance-${PerformanceProfile.metadata.name}
-
validatorCRs/informDuValidator.yaml
中的name: 50-performance-${PerformanceProfile.metadata.name}
spec.additionalKernelArgs
"efi=runtime"
为集群主机配置 UEFI 安全引导。spec.cpu.isolated
设置隔离的 CPU。确保所有 Hyper-Threading 对都匹配。
重要保留和隔离的 CPU 池不得重叠,并且必须一起跨越所有可用的内核。未考虑导致系统中未定义的 CPU 内核。
spec.cpu.reserved
设置保留的 CPU。启用工作负载分区时,系统进程、内核线程和系统容器线程仅限于这些 CPU。所有不是隔离的 CPU 都应保留。
spec.hugepages.pages
-
设置巨页数量(
数量
) -
设置巨页大小(
大小
)。 -
将
node
设置为 NUMA 节点,它是hugepages
分配的位置 (node
)
spec.realTimeKernel
将
enabled
设置为true
以使用实时内核。spec.workloadHints
使用
workloadHints
为不同类型的工作负载定义顶级标记集合。示例配置为低延迟和高性能配置集群。-
工作负载分区为平台 pod 引进了扩展 management.workload.openshift.io/cores
资源类型。kubelet 公告分配给对应资源内池的 pod 的资源和 CPU 请求。启用工作负载分区后,management.workload.openshift.io/cores
资源允许调度程序根据主机的 cpushares
容量正确分配 pod,而不只是默认的 cpuset
。
其他资源
- 有关单节点 OpenShift 集群的推荐工作负载分区配置,请参阅 Workload partitioning。