第 15 章 工作负载分区

重要

工作负载分区只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

在资源受限环境中,您可以使用工作负载分区来隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。

集群管理所需的最小保留 CPU 数量是 4 个 CPU Hyper-Threads (HT)。使用工作负载分区,您可以注解一组集群管理 pod 和一组典型的附加 Operator,以包含在集群管理工作负载分区中。这些 pod 通常在大小为最小要求的 CPU 配置中运行。除了最小集群管理 pod 之外,额外的其他 Operator 或工作负载则需要将额外的 CPU 添加到工作负载分区中。

工作负载分区使用标准 Kubernetes 调度功能将用户工作负载与平台工作负载隔离。

工作负载分区需要以下更改:

  1. 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
    注意

    工作负载分区只能在集群安装过程中启用。您不能在安装后禁用工作负载分区。

  2. 在性能配置集中,指定 isolatedreserved CPU。

    apiVersion: performance.openshift.io/v2
    kind: PerformanceProfile
    metadata:
      name: openshift-node-workload-partitioning-worker
    spec:
      cpu:
        isolated: 0,1 1
        reserved: "2-3" 2
      machineConfigPoolSelector:
        pools.operator.machineconfiguration.openshift.io/worker: ""
      nodeSelector:
        node-role.kubernetes.io/worker: ""
    1
    设置隔离的 CPU。确保所有 Hyper-Threading 对都匹配。
    2
    指定 CPU 集来固定工作负载和 OpenShift Container Platform 基础架构 pod。启用工作负载分区时,systemdCRI-OKubelet 等平台服务和平台服务仅限于这些 CPU。所有不是隔离的 CPU 都应保留。

工作负载分区为平台 pod 引进了扩展 management.workload.openshift.io/cores 资源类型。kubelet 根据相应资源内分配给池的 pod 公告资源和 CPU 请求。启用工作负载分区后,management.workload.openshift.io/cores 资源允许调度程序根据主机的 cpushares 容量正确分配 pod,而不只是默认的 cpuset

其他资源