Kubernetes Descheduler Helm 部署:策略怎么选,装完如何确认它在干活

发布时间:2026/10/16 19:33:40

Kubernetes Descheduler Helm 部署:策略怎么选,装完如何确认它在干活 Kubernetes Descheduler Helm 部署策略怎么选装完如何确认它在干活【免费下载链接】deschedulerDescheduler for Kubernetes项目地址: https://gitcode.com/gh_mirrors/de/deschedulerDescheduler for Kubernetes 会周期性扫描集群把节点放错位置的 Pod 驱逐掉交给调度器重新安置。官方仓库里自带 Helm chart一条helm install就能把 CronJob、RBAC 和策略 ConfigMap 全部铺好。本文按先判断值不值得上 → 怎么装 → 策略取舍 → 验证生效的顺序走一遍全程只用最小可运行的命令集。一、先判断你的集群有哪些 Pod 值得被挪走一个跑了几个月的集群常见病灶是节点冷热不均一部分节点 CPU 长期贴着 90%另一部分刚过 10%而调度器只管能不能放得下不管放得匀不匀。Descheduler 解决的就是这类存量问题它盯的信号可以归纳成 4 类资源占用失衡节点负载明显低于目标水位或个别节点长期过载对应LowNodeUtilization/HighNodeUtilization。规则违反Pod 所在节点已经不满足它的节点亲和、污点容忍、Pod 间反亲和或拓扑分布约束对应RemovePodsViolatingNodeAffinity、RemovePodsViolatingNodeTaints、RemovePodsViolatingInterPodAntiAffinity、RemovePodsViolatingTopologySpreadConstraint。冗余副本同一 Deployment 的多个副本挤在同一个节点上对应RemoveDuplicates。健康异常容器反复崩溃、重启次数越过阈值对应RemovePodsHavingTooManyRestarts。如果你的集群里这四类问题一个都没有Descheduler 开了也是空转如果第一类是主要矛盾那核心就是后面要讲的LowNodeUtilization阈值怎么调。二、Descheduler 怎么装前置检查与 chart 安装先过三关版本对应Descheduler 的版本号和 Kubernetes 小版本是对齐的比如 v0.36 对应 K8s v1.36且每个版本只在最近 3 个 K8s 小版本上测试过。装之前先kubectl version确认集群不低于 1.21并据此选镜像 tag。Helm 3.xchart 用了batch/v1的 CronJobHelm 2 直接不可用。集群管理员权限chart 要创建 ClusterRole、ClusterRoleBinding 和 ServiceAccount没有 cluster-admin 等价权限会在渲染后 apply 失败。拿到 chart 的方式是克隆仓库进入 chart 目录git clone https://gitcode.com/gh_mirrors/de/descheduler cd descheduler/charts/descheduler安装时只改最影响行为的两三个参数即可helm install descheduler . -n kube-system --set schedule*/15 * * * *values.yaml 里值得注意的 key 有这几个scheduleCronJob 触发周期chart 默认是*/2 * * * *每 2 分钟一轮生产环境建议放宽到 10~15 分钟避免驱逐风暴。image.tag留空时取 chart 的 appVersion当前 v0.36.0想锁定版本就显式给值。kind默认CronJob改Deployment则常驻运行按deschedulingInterval循环需要同时配置leaderElection。deschedulerPolicy策略本体以profilesplugins的形式渲染成 ConfigMap 挂到 Pod 的/policy-dir/policy.yaml下一节展开。serviceMonitor.enabled默认 false装了 Prometheus Operator 再打开见第四节。改deschedulerPolicy后 Job Pod 会带checksum/config注解ConfigMap 一变就自动滚动重建不需要额外操作。三、内置策略的取舍默认开了什么HighNodeUtilization 为什么关着Descheduler 的每个调度周期都会按 profile 依次执行 Sort → Filter → 驱逐插件一轮跑完叫一个 Descheduling Cycle策略插件的实现都放在 pkg/framework/plugins/ 目录可以直接对照源码看每个插件的入参。默认渲染出的 policy 已经把插件分成了两组balance 组RemoveDuplicates、RemovePodsViolatingTopologySpreadConstraint、LowNodeUtilization目标是把负载摊匀是集群调优的主力。deschedule 组RemovePodsHavingTooManyRestarts、RemovePodsViolatingNodeTaints、RemovePodsViolatingNodeAffinity、RemovePodsViolatingInterPodAntiAffinity目标是清理不该在这的 Pod。各策略的适用形态可以对照这张图左边是重复副本与高重启次数中间是反亲和与拓扑分布右边是污点与节点标签几个取舍建议LowNodeUtilization 的阈值是重点。默认thresholds为 cpu/memory/pods 各 20、targetThresholds各 50含义是只有当某节点利用率低于 20 且集群平均低于 50 时才启动驱逐以把该节点抬到 50 附近为目标。业务波动大的集群可以把 target 压到 30防止来回搬 Pod。HighNodeUtilization 默认不开它需要接 metrics.k8s.io 的实时用量要在 policy 里加metricsProviderssource 为 KubernetesMetricschart 检测到后会为 ClusterRole 追加 metrics 资源权限。开了 balance 组的 LowNodeUtilization 后通常不需要再叠加它。DefaultEvictor 的 Pod 保护默认禁用了PodsWithLocalStorage带本地盘的 Pod 不动启用了PodsWithPVC。如果你的业务大量使用 emptyDir/emptyDir本地存储驱逐前务必确认这一项。RemovePodsHavingTooManyRestarts默认阈值是 100 次对频繁重启但没坏透的 Pod 很激进建议按业务容忍度上调。权限方面 chart 遵循最小集只有对pods/eviction的 create 权限会真正产生驱逐其余 nodes/namespaces/pods/PDB 等只是只读 watchevents 用于记录驱逐事件只有在配置了 KubernetesMetrics 时才会额外授予 metrics.k8s.io 的 get/list。想核对完整规则可以看 clusterrole.yaml。四、装完之后如何确认它真的在工作安装后等第一个 schedule 周期触发看最近一次 Job 的日志最直接kubectl get pods -n kube-system -l app.kubernetes.io/namedescheduler日志里出现running profile default以及各策略的执行记录说明周期在跑看到evicting pod说明确实有 Pod 被挪动。确认没有误伤的方式是紧接着跑一遍kubectl get pods -A核对被驱逐的 Pod 都在其他节点重新拉起了。指标层面Descheduler 在 10258 端口暴露/metrics核心有四个descheduler_pods_evicted_total按策略、命名空间、节点分标签的驱逐计数resulterror表示驱逐失败这个标签最值得配告警。descheduler_loop_duration_seconds一个完整周期耗时接近 schedule 间隔就说明周期太密了。descheduler_strategy_duration_seconds单个策略耗时能定位哪个插件拖慢周期。descheduler_build_info版本核对用。Prometheus 集成只需--set serviceMonitor.enabledtruechart 会渲染一个 monitoring.coreos.com/v1 的 ServiceMonitor配合namespace指向 Prometheus 所在命名空间即可。五、收尾前检查一遍的三件事跑完验证后把这三项过一遍再收工schedule是否已放宽到业务可接受的间隔LowNodeUtilization的targetThresholds是否贴合当前集群水位以及descheduler_pods_evicted_total{resulterror}是否持续为零。之后每周一看一次descheduler_loop_duration_seconds和驱逐计数即可等下一个 schedule 周期触发翻一遍 Job 日志确认没有任何 Pod 被误驱逐这次部署就算落地了。【免费下载链接】deschedulerDescheduler for Kubernetes项目地址: https://gitcode.com/gh_mirrors/de/descheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/15 11:58:21

如何用 ipatool 三步搜索 App Store 并下载 iOS IPA 应用包

如何用 ipatool 三步搜索 App Store 并下载 iOS IPA 应用包 【免费下载链接】ipatool Command-line tool that allows searching and downloading app packages (known as ipa files) from the iOS App Store 项目地址: https://gitcode.com/GitHub_Trending/ip/ipatool …

2026/10/16 19:28:46

72小时实战:把AI助手从聊天玩具炼成项目助理

1. 出发之前:我和AI助手的“第一次握手”说实话,在开始这72小时之前,我一直有一种偏见:AI助手再厉害,也不过是个加强版搜索引擎,查查资料、写写文案还行,真让它在自己的工作流里站岗&#xff0c…

2026/10/16 19:28:46

SEMI E87-0301载具管理实战:状态机、事件上报与联调避坑

简介:SEMI E87-0301 是半导体 GEM300 体系下的 Carrier Management System(CMS)临时规范,面向负责 300mm 晶圆厂自动化物料搬运的工艺集成工程师、设备工程师与 MES 厂商。标准以详细状态模型和场景定义了主机视图与生产设备在运载…

2026/10/16 19:28:46

编译全流程解析:从源代码到机器指令的六阶段执行链路

1. 这份笔记不是“背诵清单”,而是程序设计语言底层逻辑的通关地图“软件设计师【软考中级】复习笔记 —— 第八章(程序设计语言与语言处理程序基础)”这个标题,乍看是考试资料,但实际藏着一条被多数考生忽略的关键路径…

2026/10/16 19:28:46

从Zero移植空实现看Shenandoah屏障与JVM可移植性设计

如果第一次在 JDK 源码树里沿着src/hotspot/cpu/zero/gc/shenandoah/这个路径往下走,你会和我一样产生一种错位感:Shenandoah 明明是依赖读写屏障做并发整理的 GC,而cpu/zero又恰恰是 HotSpot 里“连汇编都没有”的移植版本。这两个东西凑到一…

2026/10/16 19:28:46

C语言动态内存与柔性数组:原理、陷阱与工程实践

动态内存管理一直是C语言进阶路上的分水岭,而柔性数组则是很多C语言开发者听说过、却未必真正用对的一个特性。今天我不打算写教科书式的内容,而是从实际工程的角度,把动态内存分配的原理、常见事故、排查手段、以及柔性数组的设计动机和适用…

2026/10/16 19:23:45

2026 AI编译器工程师薪资行情与核心技能解析

1. 这轮薪资行情,先看结论再聊细节先说个最直接的结论:AI编译器工程师这个岗位,在2026年的市场上已经不是“小众冷门”的代名词,而是实实在在的高薪技术方向。我综合了猎头朋友那边的一手数据、几家大厂公开的招聘信息&#xff0c…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑