llm-wiki wiki · sources 2026-06-14

原文:raw/descheduler-architecture-analysis.md · 仓库:https://github.com/kubernetes-sigs/descheduler · 优先级 P1

一句话定位

Descheduler 根据策略驱逐已经运行的 Pods,让 kube-scheduler 有机会重新放置,修复节点漂移、拓扑不均、约束变化等问题。

核心架构图

┌────────────────────────────────────────────────────────────────────────────┐
│ Cluster state drift                                                        │
│ Initial scheduling decisions become suboptimal after node or workload      │
│ changes.                                                                   │
└────────────────────────────────────────────────────────────────────────────┘
                                       │
                                       ▼
┌────────────────────────────────────────────────────────────────────────────┐
│ descheduler policy engine                                                  │
│ Strategies detect imbalance, policy violations, or removable Pods.         │
└────────────────────────────────────────────────────────────────────────────┘
                                       │
                                       ▼
┌────────────────────────────────────────────────────────────────────────────┐
│ Eviction control                                                           │
│ Evicts eligible Pods while respecting PDBs, priorities, namespaces, and    │
│ safety limits.                                                             │
└────────────────────────────────────────────────────────────────────────────┘
                                       │
                                       ▼
┌────────────────────────────────────────────────────────────────────────────┐
│ Runtime boundary                                                           │
│ kube-scheduler places replacement Pods using current cluster state.        │
└────────────────────────────────────────────────────────────────────────────┘

模块分层

层 / 模块 职责
Policy config strategies/profiles
Strategies remove duplicates, low utilization, topology spread, affinity violations
Evictor safe pod eviction
CronJob/controller deployment modes CronJob/controller deployment modes

关键数据流

周期读取节点和 Pod 状态
        │
        ▼
策略识别需要移动的 Pods
        │
        ▼
检查 PDB/namespace/priority 等保护
        │
        ▼
evict Pod
        │
        ▼
scheduler 重新调度

设计决策与哲学