Kubernetes SIG Scheduling 2022 年度报告解读:PodTopologySpread 精细化、调度器扩展钩子与子项目版图

发布时间:2026/9/17 0:05:04
Kubernetes SIG Scheduling 2022 年度报告解读:PodTopologySpread 精细化、调度器扩展钩子与子项目版图 Kubernetes SIG Scheduling 2022 年度报告解读PodTopologySpread 精细化、调度器扩展钩子与子项目版图【免费下载链接】communityKubernetes Community Documentation项目地址: https://gitcode.com/GitHub_Trending/com/communitySIG Scheduling调度兴趣小组是 Kubernetes 社区中负责 Pod 放置决策相关组件的 SIG其 2022 年度报告sig-scheduling/annual-report-2022.md系统记录了该年度的工作重点PodTopologySpread API 的可控性增强、面向外部调度器的集成钩子、一批 KEP 从 Beta 走向 Stable以及 Kueue、KWOK 等新子项目的加入。本文以这份年度报告为骨架结合仓库内的 charter.md、README.md、sigs.yaml 与报告生成模板 sig_report.tmpl逐项解读 2022 年调度领域的真实进展帮助读者理解 kube-scheduler 生态在过去一年里做了什么、为什么做、做到什么程度。SIG Scheduling 的定位与年度报告的价值根据 SIG Scheduling CharterSIG Scheduling 负责做出 Pod 放置决策的组件其范围包括调度相关特性如 Node Affinity、kube-scheduler 的性能与可扩展性与 SIG Scalability 协作、调度可靠性、Pod 调度 API与 SIG API Machinery 协作以及 Pod 调度策略与 SIG Auth 协作同时明确将网络管理、持久化存储管理、资源配额与准入策略执行列为范围之外。年度报告是 Kubernetes 社区治理体系的一部分。从 sig_report.tmpl 可以看到该模板由 generator 支撑要求各 SIG 回答本年度值得强调的工作未在 KEP 中跟踪的举措KEP 工作进展子项目与工作组变化运营检查清单等结构化问题其中 KEP 列表还可从 kubernetes/enhancements 仓库的元数据自动生成。因此2022 年度报告既是该 SIG 的年度工作总结也是观察 kube-scheduler 功能演进的权威窗口。2022 核心举措为 Pod 放置决策增加更细粒度的控制报告开篇列出的两项重点工作中第一项是PodTopologySpread API 的改进——增加更多旋钮knobs来控制散布行为引入了 minDomains 和 matchLabelKey。第二项是为外部调度器集成简化而增加更多钩子mutable pod scheduling directives、pod scheduling readiness。这两项共同指向一个趋势让集群管理员和平台构建者在默认调度器行为之外拥有更精细的放置控制权和更开放的扩展点。PodTopologySpread 增强minDomains 与 matchLabelKeysPodTopologySpread 用于把一组 Pod 均匀分布到不同拓扑域如 zone、node上其核心机制是计算各拓扑域中匹配 Pod 的数量并与 maxSkew 对比来决定放置位置。2022 年该 API 新增的控制旋钮包括minDomains允许用户指定参与均匀分布的最小拓扑域数量。当集群中实际可用的拓扑域少于该值时Pod 不再被集中塞入少数几个域而是尽量均匀地铺开避免小集群场景下负载倾斜。该能力对应 KEP-3022Tuning the number of domains in PodTopologySpread报告显示其于 v1.25 进入 Beta。matchLabelKeys通过指定一组 Pod 标签键让 PodTopologySpread 在计算 skew 时只考虑标签键取值与自身一致的 Pod从而将与自己同类的 Pod纳入散布计算。典型场景是排除刚刚创建、尚未完成启动的 Pod避免它们干扰已有 Pod 的分布判定。在 YAML 中使用时它们以 topologySpreadConstraints 的字段形式出现例如spec: topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: DoNotSchedule minDomains: 3 # KEP-3022 引入v1.25 Beta matchLabelKeys: - pod-template-hash # 只计算与自身该标签取值一致的 Pod具体字段名与支持版本以对应 Kubernetes 发行版的 API 文档为准。与之配套的还有 KEP-3094Take taints/tolerations into consideration when calculating PodTopologySpread skewv1.25 Beta在计算 PodTopologySpread 的 skew 时把节点污点taint与 Pod 容忍toleration纳入考量避免把 Pod 分布到无法真正被调度的节点上使分布结果更贴近实际可调度性。面向外部调度器的集成钩子报告提到的第二项核心工作是为外部调度器集成提供更多钩子mutable pod scheduling directives允许调度器在 Pod 调度完成后按需修改 Pod 的调度指令如 nodeSelector、affinity 等而不是要求用户重新创建 Pod。这为外部调度器与 kube-scheduler 的协作、以及调度后的动态调整提供了基础。pod scheduling readiness为 Pod 增加调度就绪门控使调度器可以区分尚未允许被调度与可以开始调度两种状态外部调度器可以据此决定何时将 Pod 纳入调度队列。这两项都属于调度框架Scheduling Framework生态的延伸其价值在于默认的 kube-scheduler 不再是唯一的选择社区可以通过明确定义的钩子与状态机构建可插拔、可协作的调度方案。这与下文提到的 scheduler-plugins 子项目定位一脉相承。不依赖 KEP 的持续投入性能、重构与两个旗舰子项目年度报告的第二部分记录了未在 KEP 中跟踪的举措包括性能改进、代码重构与清理以及两个重要的子项目Kueue报告将其描述为k8s 原生的作业调度与排队控制器k8s-native job scheduling and queueing controller是该 SIG 在 2022 年新赞助的子项目。它面向批处理、AI/ML 训练等场景为多个租户提供基于队列的作业准入与配额管理。在 sigs.yaml 与 README.md 中kueue 已被登记为 SIG Scheduling 的子项目并设有明确的 leads 与 OWNERS 文件归属。scheduler-plugins作为树外out-of-tree调度插件的官方仓库承载无法或不宜合入 kube-scheduler 主干的各种实验性与生产级插件是验证调度框架扩展性的试验场。README 中同样将其列为 SIG 子项目scheduler-plugins 的 Subprojects 一节。这两者一个解决作业排队与批量调度的集群级问题一个解决插件如何生长在核心之外的工程化问题共同构成了 2022 年 SIG Scheduling 在核心 kube-scheduler 之外的两条主要战线。2022 年 KEP 进展全景v1.24 / v1.25 / v1.26报告第三部分按进入 Beta与进入 Stable两个梯队列出了 2022 年在 v1.24、v1.25、v1.26 三个版本周期内推进的 KEP。进入 Beta 的 KEPKEP主题目标版本KEP-3022Tuning the number of domains in PodTopologySpreadminDomainsv1.25KEP-3094Take taints/tolerations into consideration when calculating PodTopologySpread skewv1.25两个 Beta KEP 都围绕 PodTopologySpread 展开详见上文体现了该年度对拓扑分布精度的集中投入。进入 Stable 的 KEPKEP主题目标版本KEP-1258Default Pod Topology Spread默认 Pod 拓扑分布v1.24KEP-1923Prefer Nominated Node优先考虑被提名的节点v1.24KEP-2249Namespace Selector for Pod AffinityPod 亲和性的命名空间选择器v1.24KEP-785Scheduler Component Config API调度器组件配置 APIv1.25KEP-902Add NonPreempting Option For PriorityClassesPriorityClass 非抢占选项v1.24这批进入 Stable 的能力值得逐一关注KEP-1258默认 Pod 拓扑分布让集群可以为未显式声明 topologySpreadConstraints 的 Pod 提供默认的拓扑分布约束显著降低了多可用区集群的配置门槛KEP-1923优先被提名节点优化了调度器在抢占流程中预选提名节点与最终放置的一致性KEP-2249亲和性命名空间选择器为 Pod 亲和性/反亲和性补充了 namespaceSelector使跨命名空间的亲和性规则可以按标签灵活圈定范围KEP-785调度器组件配置 API将 kube-scheduler 的配置收敛为正式的组件配置 APIKubeSchedulerConfiguration是调度器可运维性的基石KEP-902非抢占 PriorityClass允许 PriorityClass 声明 preemptionPolicy: Never让高优先级 Pod 不抢占其他 Pod 而是排队等待资源释放适合对抢占敏感的工作负载。从 sig_report.tmpl 的注释可以看到这类 KEP 列表本可以由生成器基于 kubernetes/enhancements 中的 KEP 元数据自动产出再由 SIG 成员人工复核因此年度报告中的版本号v1.24 / v1.25与标题均为可核查的社区记录。子项目版图新增 kueue 与 kwok退休 poseidon报告用新增 / 退休 / 延续三类梳理了 2022 年的子项目变化新增New in 2022kueue、kwok。kueue 的定位见上文kwokKubernetes Without Kubelet则提供一套轻量级的节点/Pod 模拟器让开发者无需真实节点即可进行大规模调度测试与验证是调度器性能与正确性测试的重要工具。退休Retired in 2022poseidon。延续Continuingcluster-capacity集群容量评估、descheduler再调度/驱逐治理、kube-batch批处理调度、kube-scheduler-simulator调度器仿真器、schedulerkube-scheduler 本体、scheduler-plugins。对照当前 sigs.yaml 中 sig-scheduling 的 subprojects 条目cluster-capacity、descheduler、dra-driver-topology、kube-scheduler-simulator、kube-scheduler-wasm-extension、kueue、kwok、scheduler、scheduler-library、scheduler-plugins可以看到2022 年确立的 kueue、kwok 子项目地位至今延续后续年份又新增了 DRA 驱动拓扑、WASM 扩展等新项目说明该 SIG 的树外生态仍在持续扩大。子项目的增删是社区对技术方向投入与收敛的真实写照投入资源充足、社区活跃的方向升格为新子项目而不再活跃的方向如 poseidon则被归档退役。工作组WG Batch 成立报告显示2022 年 SIG Scheduling 赞助的工作组中新增了WG Batch批处理工作组同时延续了 WG Multitenancy、WG Policy、WG Structured Logging。从当前仓库的 wg-batch/README.md 可以看到WG Batch 致力于讨论并增强核心 Kubernetes 对批处理如 HPC、AI/ML、数据分析、CI工作负载的支持统一批处理工作负载的部署方式以提升可移植性并简化提供方支持其 Stakeholder SIG 列表包含 SIG Apps、SIG Autoscaling、SIG Node 与SIG Scheduling。批处理与调度天然耦合——批量作业的排队、配额、抢占与拓扑分布都依赖调度能力这也是 WG Batch 由 SIG Scheduling 深度参与的原因。值得注意的是报告 2022 中列为延续的工作组Multitenancy、Policy、Structured Logging如今可在 archive 目录中找到对应归档反映了工作组随使命完成或演进而被归档的社区生命周期机制。项目健康与社区指标报告在 Project health 一节披露了 SIG 的社区状态最需要帮助的领域增加 reviewer 数量报告附有面向社区的 reviewer 招募呼吁。关注的健康指标多样性diversity、贡献者数量、会议出勤率。贡献者体验认为 CONTRIBUTING.md 对新人足够友好且处于最新状态除通用贡献者规范外无额外特殊要求成员来自多家公司/组织。在 Membership 一节报告给出了 2022 年的量化数据指标数值主 Slack 频道成员数3050主邮件列表成员数655主会议出席人数估算10主会议参与人数估算5SIG 拥有包的唯一 reviewer 数6SIG 拥有包的唯一 approver 数4从 community-membership.md 定义的 Reviewer/Approver 角色分工Reviewer 对 PR 给出 /lgtmApprover 批准合并来看6 名 reviewer、4 名 approver支撑着包含 kube-scheduler 核心代码在内的多个包人员规模并不宽裕——这也解释了报告把增加 reviewer列为最需要帮助领域的判断。对想参与调度社区的新人CONTRIBUTING.md 给出了明确的入口good-first-issue 与 help-wanted 标签的 issue、SIG 双周例会、邮件列表以及面向调度框架设计文档与 KEP 的阅读路径。运营工作与社区传播在 Operational 一节报告确认 2022 年的治理运营任务全部完成复核并更新了 README.md 与 CONTRIBUTING.md复核了 sigs.yaml 中的子项目列表及其 OWNERS 文件关联确认 SIG 领导chairs、tech leads、子项目 owner在 sigs.yaml 中准确且活跃在 README 中链接并更新了 2022 年会议纪要与会话录像面向社区做了年度更新2022 KubeCon NA 与 KubeCon EU 均安排了 SIG-Scheduling Intro Deep Dive 专题分享。这些任务对应的治理依据是 sig-governance.md模板 sig_report.tmpl 中也保留了这份运营检查清单的原始形态。对照当前 sigs.yaml 中 sig-scheduling 的 leadership 条目chairs 与 tech leads 均有明确的 GitHub 账号、公司与邮箱可见报告中所说的领导信息准确且活跃在仓库数据中得到了落实。结语从 sig-scheduling/annual-report-2022.md 这份年度报告可以清晰还原 SIG Scheduling 在 2022 年的三条主线一是把 PodTopologySpread 从均匀分布升级为可精细调校的均匀分布minDomains、matchLabelKeys、taint/toleration 感知让多可用区与异构集群的放置更可控二是为外部调度器打开集成空间mutable scheduling directives、pod scheduling readiness配合 scheduler-plugins 验证调度框架的扩展性三是完成子项目与工作组的版图刷新——kueue、kwok 加入、poseidon 退役、WG Batch 成立并让一批 KEP默认拓扑分布、调度器组件配置 API、非抢占 PriorityClass 等进入 Stable。对于想要理解 kube-scheduler 生态演进脉络的读者这份报告连同仓库中的 README.md、charter.md 与 sigs.yaml 构成了相互印证的完整资料链。【免费下载链接】communityKubernetes Community Documentation项目地址: https://gitcode.com/GitHub_Trending/com/community创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考