LeaderWorkerSet 源码解读:控制器架构与 Executor/Planner 工作原理完全剖析

发布时间:2026/8/20 18:49:31

LeaderWorkerSet 源码解读:控制器架构与 Executor/Planner 工作原理完全剖析
LeaderWorkerSet 源码解读控制器架构与 Executor/Planner 工作原理完全剖析【免费下载链接】lwsLeaderWorkerSet: An API for deploying a group of pods as a unit of replication项目地址: https://gitcode.com/gh_mirrors/lws2/lwsLeaderWorkerSet 是一个把一组 Pod 当作复制单元来部署的 Kubernetes 原生 API而它的核心引擎就是由控制器、Executor 与 Planner 组成的协调系统。这篇 LeaderWorkerSet 源码解读将带你从零看懂控制器架构深入剖析滚动更新中 Executor 如何执行动作、Planner 如何规划每一步帮助新手快速建立对这套调度机制的整体认知。先看整体控制器架构的四大成员LeaderWorkerSet 的控制平面由多个控制器协同工作它们各司其职共同完成Leader Worker 分组的完整生命周期管理LeaderWorkerSetReconciler主控制器负责 Leader StatefulSet、ControllerRevision 与 Headless Service 的创建和滚动更新是整个 LWS 的总调度室。Pod Controller监听 Leader Pod 的创建事件为每一个 Leader 动态创建对应的 Worker StatefulSet实现一 Leader 一 Worker 组的拓扑。Pod Webhook在 Pod 创建时注入标签与调度亲和性为分组调度如 Volcano 的 PodGroup做好准备。DisaggregatedSetReconciler在 DisaggregatedSet解耦集场景下协调多个 LWS 实例与多个角色Role其内部正是依赖 Executor 与 Planner 完成复杂的多角色滚动更新。主控制器的入口在 leaderworkerset_controller.go一次 Reconcile 会依次完成获取 LWS 对象 → 获取/创建 ControllerRevision → 计算滚动更新分区 → 用 SSA 更新 Leader StatefulSet → 协调 Headless Service → 更新状态。整个过程围绕以 StatefulSet 为复制单元、以 Revision 为版本依据展开。一次协调的完整流水线主控制器的协调流程可以概括为四个关键步骤版本管理通过 getOrCreateRevisionIfNonExist 保证每个 LWS 都对应一个 ControllerRevision检测到 Spec 变化时创建新 Revision作为滚动更新的版本基准。计算分区rollingUpdateParameters根据当前版本与目标版本计算出 partition 值决定这次更新哪几个副本。执行更新SSAWithStatefulset用 Server-Side Apply 更新 Leader StatefulSet并把 partition 写入滚动更新策略。收尾协调创建共享 Headless Service更新 Status并在更新完成后裁剪历史 Revision。上图展示了 Pod 创建的动态协作过程StatefulSet Controller 创建 Leader Pod → API Server 触发 Pod Webhook 注入 PodGroup 关联 → Pod Controller 侦测到 Leader Pod 后创建专属的 Worker StatefulSet → 再由 StatefulSet Controller 创建 Worker Pod。这条Sts → Webhook → Pod Controller的链路就是 LWS 复制单元得以成型的核心机制。Executor 工作原理滚动更新的执行引擎当 DisaggregatedSet 需要把多个角色的 LWS 滚动升级到新版本时就轮到 Executor 登场。它的核心实现在 executor.go包含两个阶段阶段一初始化滚动更新initRollingUpdate给每个旧版本 LWS 打上initial-replicas注解快照当前副本数作为后续比例排空的基线。按角色Role创建新版本 LWS副本数从 0 开始等待下一轮协调逐步扩容。检测角色增删detectRoleChanges把新增/移除的角色纳入更新范围。阶段二推进滚动更新ReconcileRollingUpdate先检查新版本是否稳定每个角色的 ReadyReplicas Replicas不稳定就等 1 秒再试避免过度扩容。调用 Planner 计算下一步动作ComputeNextStep。执行动作scaleUpNew扩容新版本scaleDownOld按新创建的优先排空策略缩容旧版本。值得注意的细节是排空时的**协同排空coordinated drain**逻辑executor.go当某个角色缩容到 0 时同一 Revision 下所有角色会一起归零保证一组 Pod作为一个整体被回收而不是留下孤立的 Worker。Planner 工作原理每一步该怎么做Planner 是一个纯函数式的规划器核心函数 ComputeNextStep 不接触 API Server只根据四个输入初始旧副本、当前旧副本、当前新副本、目标新副本和滚动更新配置计算出下一步应该把副本调整到多少。它的数学基础是线性插值把整个滚动更新理想化为 totalSteps 步每一步新版本按ceil(i * target / totalSteps)增长旧版本按floor(i * initialOld / totalSteps)排空。由于控制器是无状态的Planner 从当前观测到的副本数反推出进行到第几步再算出下一步目标。规划器的决策优先级在 planner.go 中清晰可见异常纠正如果当前旧副本超过初始值先纠正到合理范围。新版本到位如果新版本已达目标直接把旧版本全部排空。尝试扩容tryScaleUp在满足old new target maxSurge的前提下优先扩容新版本。比例排空tryProportionalDrain无法扩容时按比例缩容旧版本并保证不低于 maxUnavailable 约束。强制排空tryForceDrain兜底策略必要时为新版本腾出 surge 配额。其中还有一个防止孤儿组的保护逻辑applyOrphanPrevention如果某个角色要排空到 0 而其他角色还没准备好会强制保留至少 1 个副本避免 Leader 与 Worker 组被拆散。Executor 与 Planner 的协作闭环Executor 与 Planner 的分工非常清晰Planner 负责想Executor 负责做。每一轮协调中Executor 从集群读取真实状态交给 Planner 计算下一步再把计算结果翻译成对 LWS 的 Scale 操作经由 lws_manager.go 的Scale方法以 Patch 方式修改副本数并发出 ScalingUp / ScalingDown 事件。如此反复直到 Planner 判定滚动更新完成所有旧副本归零、新副本达到目标。这种无状态规划 有状态执行的设计带来两大好处一是控制器重启后可以从当前集群状态无缝恢复不需要额外记录中间步骤二是所有决策集中在一个纯函数里可以用 ComputeAllSteps 模拟整场滚动更新让测试变得异常简单可靠。总结理解 LWS 控制器的三句话控制器负责编排管版本、管 StatefulSet、管 Service是所有资源的大脑。Planner负责计算用线性插值模型把复杂的多角色滚动更新拆解为可执行的每一步。Executor负责执行读取规划结果安全地扩容新版本、排空旧版本并保证 Leader/Worker 组的完整性。读完这篇 LeaderWorkerSet 源码解读你已经掌握了控制器架构的骨架与 Executor/Planner 的工作原理。沿着 pkg/controllers 目录继续阅读各控制器的测试文件你会发现每个算法细节都有对应的测试用例是理解这套机制最好的活文档。【免费下载链接】lwsLeaderWorkerSet: An API for deploying a group of pods as a unit of replication项目地址: https://gitcode.com/gh_mirrors/lws2/lws创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

告别鼠标点点点,BaiduPCS-Go 把百度网盘搬进命令行

告别鼠标点点点,BaiduPCS-Go 把百度网盘搬进命令行

2026/8/20 18:49:31

告别鼠标点点点,BaiduPCS-Go 把百度网盘搬进命令行 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go 你一定经历过这种抓狂:想从百度网…

当PS3主机退役之后:我用RPCS3模拟器在PC上跑通老游戏的七天记录

当PS3主机退役之后:我用RPCS3模拟器在PC上跑通老游戏的七天记录

2026/8/20 18:39:30

当PS3主机退役之后:我用RPCS3模拟器在PC上跑通老游戏的七天记录 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 去年冬天,我的那台PS3在搬了一次家之后彻底罢工&#xff0…

让Windows 11回归经典界面:ExplorerPatcher完整上手实战与避坑清单

让Windows 11回归经典界面:ExplorerPatcher完整上手实战与避坑清单

2026/8/20 18:39:30

让Windows 11回归经典界面:ExplorerPatcher完整上手实战与避坑清单 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 如果你最近升级…

klog JSON 接口教程:把时间追踪数据接入脚本自动化的完整指南

klog JSON 接口教程:把时间追踪数据接入脚本自动化的完整指南

2026/8/20 19:59:33

klog JSON 接口教程:把时间追踪数据接入脚本自动化的完整指南 【免费下载链接】klog Command-line tool for time tracking in a human-readable, plain-text file format. 项目地址: https://gitcode.com/gh_mirrors/klog/klog klog 是一款基于纯文本文件的…

Qwen3.8-9B 函数调用实战教程:三步让模型自动使用外部工具

Qwen3.8-9B 函数调用实战教程:三步让模型自动使用外部工具

2026/8/20 19:59:33

Qwen3.8-9B 函数调用实战教程:三步让模型自动使用外部工具 【免费下载链接】Qwen3.8-9B 项目地址: https://ai.gitcode.com/hf_mirrors/empero-ai/Qwen3.8-9B Qwen3.8-9B 函数调用(Function Calling)能力,能让 90 亿参数的…

一篇文章讲透结构化提示词:用 LangGPT 从 0 到 1 写出专业级提示词

一篇文章讲透结构化提示词:用 LangGPT 从 0 到 1 写出专业级提示词

2026/8/20 19:59:33

一篇文章讲透结构化提示词:用 LangGPT 从 0 到 1 写出专业级提示词 【免费下载链接】LangGPT LangGPT: Empowering everyone to become a prompt expert! 🚀 📌 结构化提示词(Structured Prompt)提出者 📌 …

Typeplate响应式标题排版:Media Query动态字阶调整技巧

Typeplate响应式标题排版:Media Query动态字阶调整技巧

2026/8/20 19:59:33

Typeplate响应式标题排版:Media Query动态字阶调整技巧 【免费下载链接】starter-kit Typeplate is a “Typographic Starter Kit.” We don’t make aesthetic design choices, but define proper markup with extensible styling for common typographic patterns…

TabSTAR源码深度导读:从forward()到argmax的完整推理链路

TabSTAR源码深度导读:从forward()到argmax的完整推理链路

2026/8/20 19:59:33

TabSTAR源码深度导读:从forward()到argmax的完整推理链路 【免费下载链接】tabstar-npu 项目地址: https://ai.gitcode.com/atlasleong/tabstar-npu 核心关键词:TabSTAR源码、表格基础模型、昇腾NPU推理、forward()源码、argmax推理链路 一句话…

vue-star-rating 发光与动画效果:4 个技巧让评分交互更出彩

vue-star-rating 发光与动画效果:4 个技巧让评分交互更出彩

2026/8/20 19:49:33

vue-star-rating 发光与动画效果:4 个技巧让评分交互更出彩 【免费下载链接】vue-star-rating :star: A simple, highly customisable star rating component for Vue 2.x. / 3.x 项目地址: https://gitcode.com/gh_mirrors/vu/vue-star-rating vue-star-rat…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/19 9:17:18

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

2026/8/20 0:08:45

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com…

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

2026/8/20 0:08:45

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 判断你是否…

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

2026/8/20 0:08:45

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 按 3MF 官方规范的字面意思,一…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…