云服务器内容精选

  • Binpack功能介绍 Binpack调度算法的目标是尽量把已有的节点填满(即尽量不往空白节点分配)。具体实现上,Binpack调度算法为满足调度条件的节点打分,节点的资源利用率越高得分越高。Binpack算法能够尽可能填满节点,将应用负载靠拢在部分节点,这非常有利于集群节点的自动扩缩容功能。 Binpack为调度器的多个调度插件之一,与其他插件共同为节点打分,用户可以自定义该插件整体权重和各资源维度打分权重,用以提高或降低Binpack在整体调度中的影响力。调度器在计算Binpack策略得分时,会考虑Pod请求的各种资源,如:CPU、Memory和GPU等扩展资源,并根据各种资源所配置的权重做平均。
  • Binpack算法原理 Binpack在对一个节点打分时,会根据Binpack插件自身权重和各资源设置的权重值综合打分。首先,对Pod请求资源中的每类资源依次打分,以CPU为例,CPU资源在待调度节点的得分信息如下: CPU.weight * (request + used) / allocatable 即CPU权重值越高,得分越高,节点资源使用量越满,得分越高。Memory、GPU等资源原理类似。其中: CPU.weight为用户设置的CPU权重 request为当前pod请求的CPU资源量 used为当前节点已经分配使用的CPU量 allocatable为当前节点CPU可用总量 通过Binpack策略的节点总得分如下: binpack.weight * (CPU.score + Memory.score + GPU.score) / (CPU.weight+ Memory.weight+ GPU.weight) * 100 即binpack插件的权重值越大,得分越高,某类资源的权重越大,该资源在打分时的占比越大。其中: binpack.weight为用户设置的装箱调度策略权重 CPU.score为CPU资源得分,CPU.weight为CPU权重 Memory.score为Memory资源得分,Memory.weight为Memory权重 GPU.score为GPU资源得分,GPU.weight为GPU权重 图1 Binpack策略示例
  • 配置Volcano节点池软亲和调度策略 在节点池上配置用于亲和调度的标签。 登录CCE控制台。 单击集群名称进入集群,在左侧选择“节点管理”,在右侧选择“节点池”页签。 单击节点池名称后的“更新”,在弹出的“更新节点池”页面中配置参数,在“K8s标签”中配置对应的标签。 示例如下: 单击左侧导航栏的“插件中心”,在右侧找到Volcano调度器,单击“安装”或“编辑”,并在“参数配置”中设置Volcano调度器配置参数。 { "ca_cert": "", "default_scheduler_conf": { "actions": "allocate, backfill, preempt", "tiers": [ { "plugins": [ { "name": "priority" }, { "name": "gang" }, { "name": "conformance" } ] }, { "plugins": [ { "name": "drf" }, { "name": "predicates" }, { "name": "nodeorder" } ] }, { "plugins": [ { "name": "cce-gpu-topology-predicate" }, { "name": "cce-gpu-topology-priority" }, { "name": "cce-gpu" }, { // 开启节点池亲和性调度 "name": "nodepoolaffinity", // 节点池亲和性调度权重及标签设置 "arguments": { "nodepoolaffinity.weight": 10000, "nodepoolaffinity.label": "nodepool1=nodepool1" } } ] }, { "plugins": [ { "name": "nodelocalvolume" }, { "name": "nodeemptydirvolume" }, { "name": "node CS Ischeduling" }, { "name": "networkresource" } ] } ] }, "server_cert": "", "server_key": "" } 完成以上配置后,单击“确定”。
  • 调度优先级介绍 节点池软亲和调度,是通过节点池上的标签(Label)进行软亲和,具体是通过给每一个节点进行打分的机制来排序筛选最优节点。 原则:尽可能把Pod调度到带有相关标签的节点上。 打分公式如下: score = weight * MaxNodeScore * haveLabel 参数说明: weight:节点池软亲和plugin的权重。 MaxNodeScore:节点最大得分,值为100。 haveLabel:节点上是否存在插件中配置的label,如果有,值为1,如果节点上没有,值为0。