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組件本身的安裝和使用是免費的,不過需要注意的是,在以下情境中可能產生額外的費用:
操作步驟
使用以下ConfigMap,建立configmap.yaml檔案。
apiVersion: v1 kind: ConfigMap metadata: name: ack-slo-config namespace: kube-system data: #開啟彈性資源限制能力。 resource-threshold-config: | { "clusterStrategy": { "enable": true } }
查看命名空間
kube-system
下是否存在ConfigMapack-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
執行以下命令,查看當前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
。可選:使用以下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
。