裝箱調度(Binpack)
更新時間 2025-06-11 11:37:23
最近更新時間: 2025-06-11 11:37:23
分享文章
本節主要介紹了裝箱調度(Binpack)的用戶指南。
裝箱調度介紹
裝箱調度(Binpack)是一種追求資源高效利用的調度算法,其核心目標是盡可能減少整體資源的浪費。在處理集群中的任務分配時,該算法會智能地將Pod分配到那些已經有一定資源消耗的節點上,以此來減少資源的閑置和碎片化。通過采用裝箱調度策略,調度器會優先考慮那些資源使用率較高的節點,將新的Pod部署到這些節點上,而不是選擇資源使用率低的節點。這樣做的目的是為了避免某些節點資源過載而其他節點資源閑置的情況發生。
在實際操作中,裝箱調度有助于提高集群的資源利用率,因為它能夠確保資源在整個集群中得到更加均勻和合理的分配。這種方法尤其適用于那些對資源消耗有嚴格要求的場景,能夠幫助集群管理員更有效地管理和優化集群的性能。
前提條件
安裝智算套件
裝箱調度原理
Binpack 調度策略的打分算法會根據Binpack插件自身權重和各資源設置的權重值綜合打分。首先,對Pod請求資源中的每類資源依次打分,以CPU為例,CPU資源在待調度節點的得分信息如下:
cpu.weight * (request + used) / allocatable即CPU權重值越高 或者 節點使用率高,得分越高。Memory、GPU等資源原理類似。最后節點得分等于所有資源的得分之和,根據計算出的節點得分,調度器會優選出最優節點進行調度。
使用方式
Binpack調度策略通過更改配置方式開啟/關閉該功能。如果想修改資源的權重也可以通過配置進行修改。
[root@ecm-3757-002 ~]# kubectl get cm roc-scheduler-configmap -n kube-system -oyaml
apiVersion: v1
data:
roc-scheduler.conf: |
actions: "enqueue, allocate, backfill"
tiers:
- plugins:
- name: priority
- name: gang
enablePreemptable: false
- name: conformance
- plugins:
- name: drf
enablePreemptable: false
- name: predicates
- name: eci
- name: proportion
- name: nodeorder
- name: binpack
arguments:
binpack.weight: 100
binpack.cpu: 10
binpack.memory: 10
binpack.resources.nvidia.com/gpu: 80 # 支持擴展資源配置權重,前綴需加上binpack.resources
kind: ConfigMap
metadata:
annotations:
meta.helm.sh/release-name: roc
meta.helm.sh/release-namespace: kube-system
creationTimestamp: "2024-04-01T09:52:33Z"
labels:
app.kubernetes.io/managed-by: Helm
name: roc-scheduler-configmap
namespace: kube-system
resourceVersion: "18306561"
uid: 23164cf2-374f-4d73-bb6f-c2d7b4e3a89e