K8S 配置 binpack 调度策略
什么是 binpack 调度
所谓 binpack调度,原理是调度器在调度pod到节点的时候,预期在节点上保留最少的未使用 CPU 或内存。此策略最大限度地减少了正在使用的集群节点的数量,也降低了资源碎片。
在binpack的调度策略下,pod会集中使用节点资源。这样闲置的节点(上图中的node3)会被及时的回收掉以避免浪费。
利用Kubernetes Scheduler Framework实现binpack
我们可以在 Kubernetes Scheduler Framework 中使用 Score 插件 RequestedToCapacityRatio,用于优选阶段给节点打分。将节点按我们希望的方式打分。
我们可以将资源利用率为0的时候,得分0分,资源利用率为100时,得分10分,资源利用率越高,得分越高,则这个行为是Binpack的资源分配方式。
apiVersion: kubescheduler.config.k8s.io/v1beta1 kind: KubeSchedulerConfiguration leaderElection: leaderElect: true resourceLock: leases clientConnection: kubeconfig: /etc/kubernetes/config/scheduler.conf profiles: - schedulerName: default-scheduler plugins: score: enabled: - name: RequestedToCapacityRatio # 开启binpack weight: 100 disabled: - name: NodeResourcesLeastAllocated # 关闭spread pluginConfig: - name: RequestedToCapacityRatio # 配置binpack args: shape: - utilization: 0 score: 0 - utilization: 100 score: 10 resources: - name: cpu weight: 1 - name: memory weight: 1
参考:
在Amazon EKS上部署自定义scheduler实现binpack调度策略
0顶
0 踩
共 0 条评论