写在最前

https://github.com/kubernetes-sigs/descheduler

默认情况下,Kubernetes 的调度行为仅在容器部署时决定 Pod 的分配,健康检查失败后 kubelet 只会在原节点重启容器,并不会触发重新调度。这可能导致集群中某些节点压力过大,而其他节点则相对空闲。

为了实现更有效的节点负载均衡,Kubernetes 提供了 descheduler 组件。Descheduler 作为一个附属组件,可以定期执行自定义的驱逐策略,帮助将负载过高的节点上的 Pod 驱逐到负载较低的节点,从而提高资源利用率并保持集群的健康状态。

通过使用 descheduler,可以优化集群资源的分配,避免资源的不均衡分布,提升整体集群的性能和稳定性。

1. docker 部署

2. kubernetes 部署

自行根据自身集群版本选择一款来下载源码解压即可进行安装。

https://github.com/kubernetes-sigs/descheduler/tags

# Run As A Job
kubectl create -f kubernetes/base/rbac.yaml
kubectl create -f kubernetes/base/configmap.yaml
kubectl create -f kubernetes/job/job.yaml

# Run As A CronJob
kubectl create -f kubernetes/base/rbac.yaml
kubectl create -f kubernetes/base/configmap.yaml
kubectl create -f kubernetes/cronjob/cronjob.yaml

# Run As A Deployment
kubectl create -f kubernetes/base/rbac.yaml
kubectl create -f kubernetes/base/configmap.yaml
kubectl create -f kubernetes/deployment/deployment.yaml

写在最后