全部產品
Search
文件中心

Container Service for Kubernetes:啟用CPU資源彈性限制式能力

更新時間:Oct 25, 2024

在動態資源超賣情境下,您可能會將高優先順序(Guaranteed、Burstable)應用未使用的資源超賣給低優先順序(BestEffort)任務使用。為了確保BE Pod的CPU資源使用在合理範圍內,ACK提供了CPU資源彈性限制式能力,以優先保障節點中LS Pod的穩定運行。

說明

為什麼需要啟用彈性資源限制

為了提升叢集資源的利用率,您可能會採用動態資源超賣模型,為LS(Latency Sensitive)類型的高優任務預留一定的資源Buffer來應對上下遊鏈路的負載波動,並將這部分超賣資源提供給低BE類型的低優任務使用。為了控制BE Pod的CPU資源使用在合理範圍內,避免佔用LS Pod的資源而使其運行品質受到幹擾,ack-koordinator組件提供了節點維度CPU資源彈性限制式能力,支援在整機資源用量的安全水位下,控制BE Pod可用的CPU資源,保障節點內容器穩定運行。

如下圖所示,在整機安全水位下(CPU Threshold),隨著LS Pod資源使用量的變化(Pod(LS).Usage),BE Pod可用的CPU資源會被限制在合理的範圍內(CPU Restriction for BE)。限制水位的配置與動態資源超賣模型中的預留水位基本一致,以此保證CPU資源使用的一致性。

前提條件

費用說明

ack-koordinator組件本身的安裝和使用是免費的,不過需要注意的是,在以下情境中可能產生額外的費用:

  • ack-koordinator是非託管組件,安裝後將佔用Worker節點資源。您可以在安裝組件時配置各模組的資源申請量。

  • ack-koordinator預設會將資源畫像、精細化調度等功能的監控指標以Prometheus的格式對外透出。若您配置組件時開啟了ACK-Koordinator開啟Prometheus監控指標選項並使用了阿里雲Prometheus服務,這些指標將被視為自訂指標併產生相應費用。具體費用取決於您的叢集規模和應用數量等因素。建議您在啟用此功能前,仔細閱讀阿里雲Prometheus計費說明,瞭解自訂指標的免費額度和收費策略。您可以通過賬單和用量查詢,監控和管理您的資源使用方式。

操作步驟

您可以通過ConfigMap在叢集維度開啟彈性資源限制功能,也可以在ConfigMap中配置相關參數,例如彈性資源限制下節點的安全水位閾值(cpuSuppressThresholdPercent),實現更精細化的資源管理。

  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

    • 存在:使用PATCH方式進行更新,避免幹擾ConfigMap中其他配置項。

      kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"
    • 不存在:執行以下命令部署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

    預期輸出表明,BE Pod的CPU綁定範圍為10-25,35-51,62-77,87-103,即在開啟CPU資源彈性限制式後,根據當前資源使用方式,BE Pod可用的CPU資源範圍得到了限制。

  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。單位為百分比。