Kubernetes之重调度工具Descheduler-其安装部署及实操

背景

Kubernetes是通过scheduler组件来调度pod的,在pod调度过程中,由于一些原因,会出现调度不均衡的问题,例如:

  • 节点故障

  • 新节点被加到集群中

  • 某些节点利用率不足

这些都会导致pod在调度过程中分配不均,例如会造成节点负载过高,引发pod触发OOM等操作造成服务不可用。其中,节点资源利用不足时是最容易出现问题的,例如,设置的requests和limits不合理,或者没有设置requests/limits都会造成调度不均衡。

简介

Descheduler 的出现就是为了解决 Kubernetes 自身调度(一次性调度)不足的问题。它以定时任务方式运行,根据已实现的策略,重新去平衡 pod 在集群中的分布。

已实现的调度策略

RemoveDuplicates 移除重复 pod

LowNodeUtilization 节点低度使用

RemovePodsViolatingInterPodAntiAffinity 移除违反pod反亲和性的 pod

RemovePodsViolatingNodeAffinity

策略

描述

RemoveDuplicates

删除重复的Pod,确保只有一个Pod与同一节点上运行的ReplicaSet、Replication Controller、StatefulSet或者Job关联。

RemovePodsViolatingInterPodAntiAffinity

此策略可确保从节点中删除违反Pod间反亲和性的Pod。

LowNodeUtilization

此策略会找到未充分利用的节点,并尽可能从其他节点上驱逐Pod,以便ack-descheduler重新将这些被驱逐的Pod调度到未充分利用的节点上。该策略的参数可以通过nodeResourceUtilizationThresholds字段进行配置。

RemovePodsHavingTooManyRestarts

此策略可确保从节点中删除重启次数过多的Pod。

社区路线图中计划实现的功能点

Strategy to consider taints and tolerations 考虑污点和容忍

Consideration of pod affinity 考虑 pod 亲和性

Strategy to consider pod life time 考虑 pod 生命周期

Strategy to consider number of pending pods 考虑待定中的 pod 数量

Integration with cluster autoscaler 与集群自动伸缩集成

Integration with metrics providers for obtaining real load metrics 与监控工具集成来获取真正的负载指标

Consideration of Kubernetes’s scheduler’s predicates 考虑 k8s 调度器的预判机制

策略介绍

RemoveDuplicates

此策略确保每个副本集(RS)、副本控制器(RC)、部署(Deployment)或任务(Job)只有一个 pod 被分配到同一台 node 节点上。如果有多个则会被驱逐到其它节点以便更好的在集群内分散 pod。

apiVersion: "descheduler/v1alpha1"

kind: "DeschedulerPolicy"

strategies:

"RemoveDuplicates":

enabled: true #启用该策略

params: #参数

removeDuplicates:

excludeOwnerKinds:

- "ReplicaSet"

LowNodeUtilization

a. 此策略会找到未充分使用的 node 节点并在可能的情况下将那些被驱逐后希望重建的 pod 调度到该节点上。

b. 节点是否利用不足由一组可配置的 阈值(thresholds) 决定。这组阈值是以百分比方式指定了 CPU、内存以及 pod数量 的。只有当所有被评估资源都低于它们的阈值时,该 node 节点才会被认为处于利用不足状态。

c. 同时还存在一个 目标阈值(targetThresholds),用于评估那些节点是否因为超出了阈值而应该从其上驱逐 pod。任何阈值介于 thresholds 和 targetThresholds 之间的节点都被认为资源被合理利用了,因此不会发生 pod 驱逐行为(无论是被驱逐走还是被驱逐来)。

d. 与之相关的还有另一个参数numberOfNodes,这个参数用来激活指定数量的节点是否处于资源利用不足状态而发生 pod 驱逐行为。

apiVersion: "descheduler/v1alpha1"

kind: "DeschedulerPolicy"

strategies:

"LowNodeUtilization":

enabled: true #启用“低节点利用率”策略

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值