文档

弹性资源限制

更新时间:

ack-koordinator在宿主机节点提供了弹性资源限制能力,确保低优先级BE(BestEffort)类型Pod的CPU资源使用在合理范围内,保障节点内容器稳定运行。本文主要介绍如何通过ack-koordinator使用弹性资源限制能力。

背景信息

在ack-koordinator提供的动态资源超卖模型中,Reclaimed资源总量根据高优先级LS(Latency Sensitive)类型Pod的实际资源用量而动态变化,这部分资源可以供低优先级BE(BestEffort)类型Pod使用。通过动态资源超卖能力,可以将LS与BE类型容器混合部署,以此提升集群资源利用率。为了确保BE类型Pod的CPU资源使用在合理范围内,避免LS类型应用的运行质量受到干扰,ack-koordinator在节点侧提供了CPU资源弹性限制的能力。弹性资源限制功能可以帮您在整机资源用量安全水位下,控制BE类型Pod可使用的CPU资源量,保障节点内容器稳定运行。

如下图所示,在整机安全水位下(CPU Threshold),随着LS类型Pod资源使用量的变化(Pod(LS).Usage),BE类型Pod可用的CPU资源被限制在合理的范围内(CPU Restriction for BE)。限制水位的配置与动态资源超卖模型中的预留水位基本一致,以此保证CPU资源使用的一致性。

image

前提条件

已安装ack-koordinator组件,且版本≥0.4.0。关于安装ack-koordinator的具体操作,请参见ack-koordinator(ack-slo-manager)

费用说明

ack-koordinator组件本身的安装和使用是免费的,不过需要注意的是,在以下场景中可能产生额外的费用:

  • ack-koordinator是非托管组件,安装后将占用Worker节点资源。您可以在安装组件时配置各模块的资源申请量。

  • ack-koordinator默认会将资源画像、精细化调度等功能的监控指标以Prometheus的格式对外透出。若您配置组件时开启了ACK-Koordinator开启Prometheus监控指标选项并使用了阿里云Prometheus服务,这些指标将被视为自定义指标并产生相应费用。具体费用取决于您的集群规模和应用数量等因素。建议您在启用此功能前,仔细阅读阿里云Prometheus计费说明,了解自定义指标的免费额度和收费策略。您可以通过账单和用量查询,监控和管理您的资源使用情况。

操作步骤

  1. 使用以下ConfigMap,创建configmap.yaml文件。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ack-slo-config
      namespace: kube-system
    data:
      #开启弹性资源限制能力。
      resource-threshold-config: |
        {
          "clusterStrategy": {
            "enable": true
          }
        }
  2. 查看命名空间kube-system下是否存在ConfigMap ack-slo-config

    • 若存在ConfigMap ack-slo-config,请使用PATCH方式进行更新,避免干扰ConfigMap中其他配置项。

      kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"
    • 若不存在ConfigMap ack-slo-config,请执行以下命令部署ConfigMap。

      kubectl apply -f configmap.yaml
  3. 执行以下命令,查看当前BE分组对应的CPU核心绑定情况。

    cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpus

    预期输出:

    10-25,35-51,62-77,87-103

    由预期输出得到,CPU的绑定范围为10-25,35-51,62-77,87-103

  4. 可选:使用以下ConfigMap,配置高级参数。

    CPU弹性资源限制的安全水位支持精细化配置。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ack-slo-config
      namespace: kube-system
    data:
      resource-threshold-config: |
        {
          "clusterStrategy": {
            "enable": true,
            "cpuSuppressThresholdPercent": 65
          }
        }

    关键参数说明如下:

    参数

    类型

    取值范围

    说明

    enable

    Boolean

    • true

    • false

    • true:表示集群开启弹性资源限制能力。

    • false:表示集群关闭弹性资源限制能力。

    cpuSuppressThresholdPercent

    Int

    0~100

    单位为百分比,表示弹性资源限制对应的节点安全水位阈值,默认为65