全部產品
Search
文件中心

Container Service for Kubernetes:彈性資源限制

更新時間:Jun 19, 2024

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資源使用的一致性。

前提條件

已安裝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