这门课解决什么问题:把集群从“能跑”推向“可观测与自动化”
很多运维和后端开发在刚接触 Kubernetes 时,往往停留在用命令行把业务容器跑起来的阶段。一旦遇到多环境配置混乱、集群内部故障难排查、或者需要封装复杂中间件的部署逻辑时,就会感到吃力。这门课正是针对这类进阶痛点,解决的是从“基础部署”到“生产级可维护”的跨越。它不纠结于基础概念的科普,而是直接切入工作场景,用 Kustomize 处理多套环境的配置差异,用 Operator 将运维经验固化为自动化代码,并引入 Prometheus 和日志收集体系,让集群内部的状态和异常变得完全可见。如果你的业务已经上云,但排障还在靠肉眼盯终端,这门课能帮你补齐生产环境必备的工程化能力。
适合什么基础与建议学习路线
作为系列的第三篇,这门课默认你已经掌握基本的 Pod、Deployment 概念,并且能熟练使用 kubectl 操作集群。如果你完全没有接触过容器编排,建议先去补足前置基础,否则在二进制安装和 Operator 开发环节会非常吃力。对于符合基础要求的读者,建议先从 Kustomize 章节看起。这部分虽然看似简单,但它是后续管理多环境配置的基石,重点理解 overlay 覆盖机制和 patch 补丁的编写逻辑。熟悉配置管理后,再进入核心的 Operator 篇章,最后去啃 Prometheus 监控与日志收集。二进制安装单机集群的内容属于选学,主要帮你理解底层组件运作,时间紧的读者可以先跳过,直接进入应用层面的学习。
学完能独立做什么与资料配合练习建议
学完整套内容后,你能在实际工作中独立完成几项关键任务:一是为团队编写多环境(开发、测试、生产)的标准化配置文件,不再依赖全量复制 YAML;二是能够针对内部特定的复杂中间件,编写基础的 Operator 实现自动化运维与故障自愈;三是搭建一套完整的集群监控与告警大盘,并配置统一的日志收集链路。在资料使用方面,切忌只看视频不敲代码。Kustomize 章节的资料包包含了大量现成的 patch 示例,建议你对照着在自己的测试集群里跑一遍,尝试修改生成器配置。学习 Operator 时,不要直接复制资料里的现成代码,先自己理清业务逻辑并手写一遍基础框架,再与资料中的标准实现进行对比查漏。监控与日志部分则需要你手动把采集组件部署起来,观察真实的指标面板和日志滚动,这样才能把操作手感转化为自己的实战经验。
本课程是系列课程。之前更新过1(基于rancher) 2(基于kubeadm) .第三篇是进阶篇,把之前未讲到的知识点进行细化和进阶讲解、主要是应用,永远不会更
课程目录
* 第1章:kustomize快速上手使用 cplist.push('第1章:kustomize快速上手使用');/
* 第1讲:课程内容、kustomize理解
* 第2讲:kustomize抽取公共部分示列
* 第3讲:使用overlay创建多“环境”配置
* 第4讲:使用patch(补丁):配置修改
* 第5讲:使用patch(补丁):修改配置(上节课作业)
* 第6讲:使用生成器:configmap生成
* 第7讲:使用vars设置环境变量(env)
* 第2章:二进制安装k8s1.20单集群版(选学) cplist.push('第2章:二进制安装k8s1.20单集群版(选学)');/
* 第8讲:基本架构和环境、主机的设置
* 第9讲:关于k8s的证书、配置和启动etcd
* 第10讲:部署k8s-apiserver
* 第11讲:配置kubectl、访问apiserver
* 第12讲:部署controller-manager
* 第13讲:部署kube-scheduler
* 第14讲:部署kubelet
* 第15讲:部署kube-proxy
* 第16讲:部署网络组件flanneld
* 第17讲:部署CoreDNS、测试服务
* 第18讲:添加子节点到集群(1):kubelet
* 第19讲:添加子节点到集群(2):kubeproxy
* 第2.5章:Kubeadm高可用部署篇(选学) cplist.push('第2.5章:Kubeadm高可用部署篇(选学)');/
* 第20讲:k8s高可用集群开张篇
* 第21讲:kubeadm高可用环境准备
* 第22讲:kubeadm高可用集群部署(上)
* 第23讲:kubeadm高可用集群部署(下)
* 第三章:准入控制器之WebHook实战 cplist.push('第三章:准入控制器之WebHook实战');/
* 第24讲:Admission Controller入门
* 第25讲:编写最简单的WebHook、本地测试
* 第26讲:部署webhook到k8s中、例子:禁止特殊pod名称
* 第27讲:实例:提交POD时修改镜像源
* 第28讲:实例:指定命名空间修改POD镜像源
* 第29讲:实例:创建POD时自动注入容器
* 第四章:k8s网络基础恶补篇 cplist.push('第四章:k8s网络基础恶补篇');/
* 第30讲:K8s网络原理开张课
* 第31讲:单Node多pod k8s网络通信
* 第32讲:多节点网络通信原理(flannel-vxlan)
* 第33讲:多节点网络原理(flannel-host-gw)
* 第五章:Operator和kubeBuilder入门 cplist.push('第五章:Operator和kubeBuilder入门');/
* 第34讲:Operator入门、基本环境讲解
* 第35讲:创建第一个项目、创建CRD
* 第36讲:最简单的控制器代码、运行控制器
* 第37讲:初步发布到k8s中
* 第38讲:自定义资源字段验证的基本方法
* 第39讲:[不用学,看看即可]创建webhook进行深入验证(选学,后面要重录)
* 第40讲:实例(1):提交资源和创建POD
* 第41讲:实例(2):资源删除判断(上)
* 第42讲:实例(2):资源删除判断(下)--支持多副本
* 第43讲:实例(3)副本收缩处理
* 第44讲:监听CR创建出来的POD
* 第45讲:自动重建手工删除的POD
* 第46讲:实例(6):添加事件支持(events)
* 第47讲:实例(7):支持资源的状态展现
* 第48讲:初步完成集成测试(选学)
* 第六章:k8s和prometheus实战速学 cplist.push('第六章:k8s和prometheus实战速学');/
* 第49讲:prometheus最简部署、kube-state-metrics部署
* 第50讲:prometheus拉取kube-state-metrics、node_exporter部署
* 第51讲:prometheus服务自动发现(1):快速入门
* 第52讲:prometheus服务自动发现(2):修改标签
* 第53讲:prometheus服务自动发现(3):POD监控的快速配置(kubelet)
* 第54讲:Prometheus Adapter快速和安装
* 第55讲:Prometheus基本查询(1):基本概念、即时向量查询
* 第56讲:Prometheus基本查询(2):使用gin实现自定义指标(初步)
* 第57讲:Prometheus基本查询(3):区间查询、聚合操作符
* 第58讲:自动发现我们的业务Service并进行抓取
* 第59讲:Prometheus Adapter(2):创建自定义指标
* 第60讲:使用HPA进行业务POD的扩容(简易操作)
* 第61讲:AlertManager快速入门、安装
* 第62讲:AlertManager快速入门(2):告警规则配置
* 第63讲:AlertManager快速入门(3):微信告警快速配置
* 第64讲:AlertManager快速入门(4): 告警模板快速使用
* 第65讲:AlertManager快速入门(4): 告警模板恢复发送
* 第66讲:AlertManager快速入门(5):告警分组发送给webhook和微信
* 第67讲:AlertManager快速入门(6): 告警抑制的基本配置和使用场景
* 第68讲:AlertManager快速入门(7): 静默配置(silence)
* 第七章:k8s日志收集入门之fluent-bit cplist.push('第七章:k8s日志收集入门之fluent-bit');/
* 第69讲:开张课、 部署fluent-bit、第一个配置
* 第70讲:Output:把日志输出到ElasticSearch里(初步)
* 第71讲:收集指定POD日志的基本方法
* 第72讲:解析器(parser)的了解、gin日志输出(logrus)
* 第73讲:抓取所有pod日志、filter 入门、增加记录字段(节点名称)
* 第74讲:filter(2) :使用kubenetes过滤器一把梭显示元信息
* 第八章:自定义POD调度入门(scheduling-framework) cplist.push('第八章:自定义POD调度入门(scheduling-framework)');/
* 第75讲:基本概念:调度框架、扩展点、基本代码
* 第76讲:基本编译和部署、效果展示
* 第77讲:prefilter小示例:控制POD最大调度数量
* 第78讲:设置调度插件参数的基本方法
* 第79讲:示例:使用Filter过滤不可调度的节点
* 第80讲:示例:Score打分的最简单写法、归一化处理
* 第81讲:preScore插件干涉调度打分示例
* 第82讲:Reserve阶段和Permit阶段:示例判断前置POD
* 第83讲:PreBind阶段和Bind、PostBind阶段说明
* 第九章:k8s+harbor的极简入门 cplist.push('第九章:k8s+harbor的极简入门');/
* 第84讲:基本概念、快速无脑安装harbor
* 第85讲:创建用户、向harbor发布第一个镜像
* 第86讲:k8s上使用harbor私有镜像(nodeport)
* 第87讲:golang上调用harbor API的姿势
* 第十章:泛型改造k8s开发代码篇 cplist.push('第十章:泛型改造k8s开发代码篇');/
* 第88讲:使用泛型编写通用获取k8s资源的函数
* 第89讲:使用泛型编写通用排序k8s资源的函数
* 第90讲:泛型通用排序k8s资源(2) 传递自定义排序业务
* 第91讲:泛型通用遍历k8s资源
* 第92讲:曾经”恶心”的切片类型转换用泛型解决
* 第93讲:相对通用的泛型Informer EventHandler
* 第十一章:(补充)k8s leader选主代码实战入门 cplist.push('第十一章:(补充)k8s leader选主代码实战入门');/
* 第94讲:选主基本概念、快速无脑启动代码
* 第95讲:结合SharedInformer进行应用程序选主
* 第十二章:FakeClient的妙用 cplist.push('第十二章:FakeClient的妙用');/
* 第96讲:最基本的fake client创建和代码技巧
* 第97讲:Fake client给POD添加/修改注解
* 第十三章:k8s开发中分级日志库的使用 cplist.push('第十三章:k8s开发中分级日志库的使用');/
* 第98讲:运维开发中的分级日志:库的使用
* 第99讲:实例训练:一个完整的分级日志函数编写






