先弄清楚:这门课解决什么问题,值不值得学

日常做 Kubernetes 扩展开发时,很多人会用 kubebuilder 脚手架生成 Operator 项目,照着模板填几个接口就能跑起来。但一旦遇到资源状态不更新、Reconcile 频繁卡死、缓存和 apiserver 数据不一致等线上疑难杂症,往往无从下手。这门课的主题正是 Operator 开发的底层依赖库 controller runtime。它不教怎么写业务逻辑,而是把 Manager、Client、Scheme、Informer、工作队列这些核心组件拆开,讲清楚它们在底层是如何协同工作的。如果你的诉求只是拿 kubebuilder 照猫画虎做个简单定制,暂时不需要碰底层;但如果你想具备独立排查 Operator 运行时异常的能力,或者要基于特殊场景做深度定制,那么搞懂这套底层机制就是绕不开的必修课。

适合什么基础,建议先看哪几块

这门资料不适合零基础。读者需要具备 Go 语言开发能力,对 Kubernetes 的核心对象和 client-go 的基本机制有概念,最好已经用 kubebuilder 写过简单的 Operator。资料的整体编排是从 Manager 的创建切入,逐步深入到 Scheme 的手工初始化、Informer 机制、半手工创建 Controller 以及工作队列。建议不要一上来就按顺序平推,而是先集中看 Scheme 相关章节,理解资源类型注册的本质;接着看手工触发 Reconcile 以及跨资源事件触发 Reconcile 的部分,这是日常排查问题最密集的区域;最后再回到工作队列,弄懂事件去重和限速重试的底层逻辑。这样优先级能帮你快速建立对控制循环的全局认知。

资料怎么配合练习,学完能独立做什么

这套资料带有明显的源码剖析和手工拆解属性,单纯当视频看很容易看完就忘。正确的使用方式是边看边在本地建一个极简的测试工程,跟着资料里的步骤去手工初始化 Scheme,或者半手工创建 Controller。遇到讲工作队列的章节,自己写一段代码手工调用,观察事件是如何入队、去重并最终触发 Reconcile 的。把资料里的拆解步骤当作验证底层的实验指导,而不是被动接受结论。学完这套底层机制后,你应该能独立读懂开源 Operator 项目的源码,在遇到状态同步异常或性能瓶颈时,能直接定位到是缓存读取策略问题还是队列重试逻辑缺陷,并能脱离脚手架限制,手工组装并定制属于自己的 Kubernetes 控制器。


本课程是k8s基础速学3(永远不会更完)系列的子课程,由于比较重要,所以单列课程。本课程讲的是Operator开发的底层库--controller runtim

课程目录

*   第1讲:开张课、课程基本内容、管理器创建

*   第2讲:Manager学习(2): 让client 绕过缓存读取资源

*   第3讲:Manager学习(3): 一坨坨的scheme到底是什么

*   第4讲:Manager学习(4): 手工初始化scheme 的姿势

*   第5讲:Manager学习(5): 查看Manager中的Informer

*   第6讲:Manager学习(6): 半手工创建Controller

*   第7讲:Manager学习(7): 手工触发Reconcile函数

*   第8讲:Manager学习(8): 其他资源变更触发Reconcile函数

*   第9讲:认识工作队列:快速手工调用创建

*   第10讲:工作队列:手工“处理”队列数据

*   第11讲:工作队列:快速了解限速队列

*   第12讲:补充课:关于golang限流器(令牌桶)的用法补充

*   第13讲:再看控制器的限流队列创建

*   第14讲:控制器设置并发数及其作用

*   第15讲:关于Own资源监听的姿势(监听子资源)