在動態資源超賣場景下,您可能會將高優先級(Guaranteed、Burstable)應用未使用的資源超賣給低優先級(BestEffort)任務使用。為了確保BE Pod的CPU資源使用在合理范圍內,ACK提供了CPU資源彈性限制能力,以優先保障節點中LS Pod的穩定運行。
為了幫助您更好地理解本文檔并使用本功能,推薦您參見Kubernetes官方文檔了解Pod Qos類、為容器和 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集群Pro版,請參見創建ACK Pro版集群。
已安裝ack-koordinator組件,且組件版本為0.4.0及以上,請參見ack-koordinator(ack-slo-manager)。
費用說明
ack-koordinator組件本身的安裝和使用是免費的,不過需要注意的是,在以下場景中可能產生額外的費用:
ack-koordinator是非托管組件,安裝后將占用Worker節點資源。您可以在安裝組件時配置各模塊的資源申請量。
ack-koordinator默認會將資源畫像、精細化調度等功能的監控指標以Prometheus的格式對外透出。若您配置組件時開啟了ACK-Koordinator開啟Prometheus監控指標選項并使用了阿里云Prometheus服務,這些指標將被視為自定義指標并產生相應費用。具體費用取決于您的集群規模和應用數量等因素。建議您在啟用此功能前,仔細閱讀阿里云Prometheus計費說明,了解自定義指標的免費額度和收費策略。您可以通過賬單和用量查詢,監控和管理您的資源使用情況。
操作步驟
您可以通過ConfigMap在集群維度開啟彈性資源限制功能,也可以在ConfigMap中配置相關參數,例如彈性資源限制下節點的安全水位閾值(cpuSuppressThresholdPercent
),實現更精細化的資源管理。
使用以下ConfigMap,創建configmap.yaml文件。
apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: # 開啟彈性資源限制能力。 resource-threshold-config: | { "clusterStrategy": { "enable": true } }
查看命名空間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
執行以下命令,查看當前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資源范圍得到了限制。可選:使用以下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
。單位為百分比。