这门课解决什么问题
Kubernetes 的日常排障和资源查看,默认依赖 kubectl 或图形化控制台。但真实工作场景里,很多运维同学希望把高频操作沉淀成专属命令行工具,比如一键查看特定业务标签的 Pod 拓扑、批量过滤自定义指标,或者给 kubectl 加一个可视化的交互面板。这门课聚焦的正是这类需求:如何基于 Kubernetes 客户端扩展机制,开发自定义插件并实现命令行可视化。它避开了前端页面开发这条线,专门给不想碰前端框架、只想在终端里用 Go 代码解决集群运维问题的同学提供一条可落地的开发路径。
适合什么基础与学习建议
这份资料不适合对 Kubernetes 核心概念和 Go 语言完全陌生的读者。你需要对 Pod、Deployment 等基础 API 对象有清晰认知,并且能独立看懂简单的 Go 代码逻辑。课程原本定位为番外扩展,部分章节带有实验性质,代码稳定性偏弱,因此不建议逐行照抄。作为编辑,建议你先跳过第一部分关于容器共享进程命名空间的章节(资料里已明确标注无需观看),直接从 Kubernetes 动态客户端的使用套路看起。重点理解 dynamic client 如何反序列化对象、如何用模板化方式创建资源,这几块是后续把自定义逻辑封装成插件的基础。对于带有实验性质的扩展模块,当作思路参考即可,不必强求在生产环境复刻。
学完能做什么与资料配合方式
跟着核心章节走完,你能独立写出一个可挂载到 kubectl 下的自定义插件,通过命令行直接与集群 API 交互,并按需输出可视化的状态视图。这意味着以后遇到团队特有的巡检需求,不必再找第三方工具,自己就能用代码拼装出专属的运维命令。配合资料练习时,建议先在本机搭一个可用的测试集群,把课件里的客户端调用逻辑逐段跑通。每看完一个动态客户端的操作示例,就改写一遍目标资源类型,验证自己对 API 请求链路的理解是否准确。遇到实验性代码报错,先排查客户端版本差异,不要急于否定整体逻辑,把精力集中在搞懂请求是怎么组装、对象是怎么解析的这两个关键点上。
(本课程原名是k8s番外篇,现在正式更名为插件开发实战,供不想学习前端的运维同学学习)本课程少量内容带有实验性质或不稳定代码,仅供学有余力的同学参考。课件需要向
课程目录
* 1、容器共享进程命名空间(本章无需观看) cplist.push('1、容器共享进程命名空间(本章无需观看)');/
* 第1讲:容器共享进程命名空间的应用(1)基本操作
* 第2讲:容器共享进程命名空间(2)使用信号通知进程(命令模式)
* 第3讲:容器共享进程命名空间(3)使用信号通知进程(代码模式)
* 2、k8s动态客户端套路 cplist.push('2、k8s动态客户端套路');/
* 第4讲:k8s动态客户端的使用姿势(dynamic client)
* 第5讲:k8s动态客户端(2) :反序列化对象(deploy为列)
* 第6讲:k8s动态客户端(3):模板化创建deployment(初步)
* 第7讲:k8s动态客户端(4):调用kustomize创建deployment(读取内容)
* 第8讲:k8s动态客户端(5):调用kustomize创建多文档资源(模拟 kubectl apply)
* 第9讲:clientset执行Patch操作:策略性补丁之替换
* 第10讲:clientset执行Patch操作:策略性补丁之合并
* 第11讲:clientset执行Patch操作:JSONPatch操作
* 第12讲:dynamicClient执行Patch操作:JSONPatch操作
* 3、Informer的实战代码使用 cplist.push('3、Informer的实战代码使用');/
* 第13讲:Informer的基本作用和快速创建
* 第14讲:Informer和SharedInformer的用法和区别
* 第15讲:IndexInformer的实战写法、带索引的Informer
* 第16讲:SharedInformerFactory实战使用(1):监听指定资源
* 第17讲:SharedInformerFactory实战使用(2):结合gin显示资源列表、根据标签过滤
* 第18讲:SharedInformerFactory实战使用(3):结合gin构建通用路由来获取资源列表
* 第19讲:SharedInformerFactory实战使用(4):通用路由+索引+标签过滤资源列表
* 第20讲:SharedInformerFactory实战使用(5):支持多条件索引过滤(and)
* 4、kubectl插件编写实战(Pod插件) cplist.push('4、kubectl插件编写实战(Pod插件)');/
* 第21讲:最基本、最简单的编写方式
* 第22讲:POD插件编写(1):初始化代码、取出POD列表
* 第23讲:POD插件编写(2):支持ns参数传递
* 第24讲:POD插件编写(3):表格化显示PODS列表
* 第25讲:POD插件编写(4):支持标签展示
* 第26讲:POD插件编写(5):支持根据标签过滤
* 第27讲:POD插件编写(6):支持FieldSelector过滤
* 第28讲:POD插件编写(7):支持Name正则查询
* 第29讲:交互式POD插件(1):基本代码结构
* 第30讲:交互式POD插件(2):结合Informer显示列表(演示课)
* 第31讲:交互式POD插件(3):获取POD时进行提示(上)
* 第32讲:交互式POD插件(3):获取POD时进行提示(下)
* 第33讲:交互式POD插件(4):获取POD详细(yaml输出)
* 第34讲:补充课:引入控制台交互库
* 第35讲:交互式POD插件(5):获取POD详细(支持选择详细
* 第36讲:交互式POD插件(6):获取POD详细(扩展交互式)
* 第37讲:交互式POD插件(7):获取和展示POD事件
* 第38讲:交互式POD插件(8):获取和展示POD日志
* 第39讲:交互式POD插件(9):远程进入POD(演示课)
* 第40讲:交互式POD插件(10): 显示 POD 内存/cpu使用率






