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 20:48:54

跨平台消息收发:状态同步、离线补偿与去重实践

简介:一份面向安卓用户整理的电报(Telegram)安装包合集,以 zip 格式打包,专为解决下载渠道受限、需要离线安装客户端的场景而准备。压缩包共 10 个文件,整体大小 45.64MB,主体为 4 个 APK 文件&…

2026/10/16 20:48:54

思科 Catalyst 9800-40 无线控制器实战配置手册:从开箱到HA高可用

简介:这份《思科Catalyst 9800无线控制器实战配置手册》面向网络工程师、无线运维人员及备考思科认证的学习者,聚焦Catalyst 9800-40这一新一代高性能无线控制器的部署与配置。内容涵盖技术规格与性能指标(最大2000个接入点、32000客户端、40…

2026/10/16 20:48:54

DCN v4.2工业级复现:可微分采样与PRF感受野深度解析

1. 为什么是DCN v4.2?——从“主线”二字看技术选型的底层逻辑“主线4.2DCN代码复现及解析”这个标题里,“主线”不是随便加的修饰词,而是整个项目的技术锚点。它指向的不是某篇论文附录里的实验代码,也不是GitHub上star数最高的第…

2026/10/16 20:48:54

AI芯片软硬件协同设计实战:从计算阵列到编译器优化

AI 芯片的软硬件设计这件事,我前后参与了几个完整项目,从架构定义一路跟到软件工具链落地,最大的体会就是:芯片流片回来只是开始,配套软件能不能把硬件“伺候好”,才决定这颗芯片是样片还是产品。市面上讲A…

2026/10/16 20:48:54

基于ChatGPT的虚拟角色对话生成与情节开发方案

简介:这份文档围绕ChatGPT技术在虚拟角色对话生成与情节开发中的应用展开研究与评估,面向游戏开发、虚拟现实、虚拟剧情及影视制作等领域的从业者与研究者,也适合对自然语言处理应用感兴趣的学习者参考。资源包内含1个docx文档,整…

2026/10/16 20:43:54

OpenMontage 零成本 AI 视频流水线部署与模型选型实战

1. 为什么我会盯上 OpenMontage 这条流水线第一次看到 OpenMontage 这个项目,我的反应其实很平淡——又一个"AI 视频自动化"的壳子。这两年打着"一键出片"旗号的东西太多了,真正跑起来不是要你填一堆 API Key,就是生成到…

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
免费获取方案
☎咨询二维码 ☎ ↑