别只停留在 YAML 层面,去理解容器是如何“活”过来的

很多开发者对 Kubernetes 的认知止步于写配置文件:Deploy 跑起来、Service 连通、扩缩容成功,就觉得掌握了。但一旦集群出现节点 NotReady、容器 OOMKilled 却找不到根因,或者想自定义 Operator 时,就会陷入瓶颈。这门课解决的核心问题,正是从“使用者”到“理解者”的跨越——它不只教你怎么让集群转起来,更通过源码剖析 kubelet 的内部机制,回答那些面试和排障中才会被问倒的问题:资源限制真的生效了吗?容器启动的每一个步骤背后,kubelet 做了什么?

适合有一定 Linux 基础、熟悉 Docker 概念、且对 Go 语言有基本阅读能力的学习者。如果你从未写过 Go 代码,前几章的源码跟读会有些吃力,建议先补一下基础语法。课程前半部分适合快速回顾 k8s 核心对象和部署流程,重点看 kubeadm 部署集群和第一个应用的章节,建立整体印象。后半部分则是硬核的源码深潜,尤其是第 10 章到第 16 章,详细拆解了 kubelet 中 cgroup 管理、CPU/Memory/Device 资源管理器、PLEG 对象以及 containerRuntime 的完整生命周期。

学完后,你应该能独立回答:kubelet 是如何通过 cgroup 给容器设置 CPU 和内存限制的?ToplogyManager 和 cpuManager 是如何协同工作以保证性能隔离的?一个容器从拉起镜像到最终运行,kubelet 经历了哪些具体的源码调用步骤?此外,资料包中的 Golang 代码练习至关重要,不要只看视频,务必亲手运行 cgroup 限制代码和 cpuset 体验代码,只有当你的代码真的被 cgroup 限制住时,源码里的逻辑才是有温度的,而不是枯燥的函数名。

课程目录

kubernetes实战与源码剖析
章节1-第1章 准备工作
课时1-k8s的介绍与核心对象概念-1660019847.mp4 62.75M
课时2-使用kubeadm 10分钟部署k8集群-1660019860.mp4 77.65M
课时3-k8s-上部署第一个应用程序-1660019877.mp4 76.24M
课时4-给应用添加service,执行扩容和滚动更新-1660019890.mp4 58.60M
课时5-安装Kuboard在页面上熟悉k8s集群-1660019911.mp4 173.41M
课时6-阅读k8s源码的准备工作-1660019918.mp4 22.86M
章节10-第10章 kubelet中的cgroupManager解读
课时1-10.1 cgroup-v1原理介绍和golang代码体验cgroup的cpu和memory限制-1660020416.mp4 84.69M
课时2-10.2 cgroup-v2原理介绍-1660020422.mp4 16.17M
课时3-10.3 kubelet 中的cgroupManager解析和节点qos顶级目录创建-1660020432.mp4 109.98M
课时4-10.4 containerManager应用之创建容器cgroup目录-1660020442.mp4 106.35M
章节11-第11章 kubelet中的资源管理器cpuManager、memoryManager、deviceManager解读
课时1-11.1 TopologyManager分析-1660020452.mp4 60.97M
课时2-11.2 TopologyManager源码解读-1660020468.mp4 205.03M
课时3-11.3 写goland代码体会cpuset原理-1660020479.mp4 58.51M
课时4-11.4 kubelet中的cpuManager解读-1660020499.mp4 157.31M
课时5-11.5 memoryManager原理简介-1660020507.mp4 24.09M
课时6-11.6 memoryManager源码阅读-1660020520.mp4 123.90M
课时7-11.7 device-plugins设备插件机制介绍-1660020528.mp4 24.99M
课时8-11.8 deviceManager源码解读-1660020542.mp4 127.14M
章节12-第12章 kubelet pleg对象和containerManager总结
课时1-12.1 kubelet pleg对象介绍和源码解读-1660020561.mp4 141.03M
课时2-12.2 kubelet containerManager源码解读-1660020580.mp4 147.99M
章节13-第13章 kubelet containerRuntime和sandbox容器
课时1-13.1 containerRuntime 原理简介-1660020591.mp4 42.87M
课时2-13.2 kubelet containerRuntime接口定义和初始化-1660020601.mp4 75.30M
课时3-13.3 sandbox简介和podsandbox-1660020608.mp4 18.41M
课时4-13.4 containerRuntime创建sandbox源码阅读-1660020620.mp4 100.57M
章节14-第14章 containerRuntime创建init容器前期工作
课时1-14.1 实操说明init容器的作用-1660020634.mp4 55.46M
课时2-14.2 创建init容器步骤1拉取镜像源码解读-1660020649.mp4 127.67M
课时3-14.3 创建init容器步骤2create的准备工作源码解读-1660020664.mp4 129.15M
章节15-第15章 创建init和app容器的后期工作
课时1-15.1 创建init容器步骤2剩余工作源码解读-1660020673.mp4 36.53M
课时2-15.2 创建init容器步骤3 4启动容器源码解读-1660020683.mp4 72.91M
章节16-第16章 containerRuntime停止容器的流程
课时1-16.1 killContainer源码解读-1660020693.mp4 52.86M
课时2-16.2 killContainer的调用方解析-1660020702.mp4 69.55M
章节17-第17章 kubelet的GarbageCollection
课时1-17.1 GarbageCollection之镜像清理源码解读-1660020714.mp4 64.63M
课时2-17.2 GarbageCollection之容器清理源码解读-1660020725.mp4 67.36M
章节18-第18章 kubelet的syncLoop的第1大监听configCh
课时1-18.1 syncLoop的configCh中的apiserver通信的流程-1660020740.mp4 102.01M
课时2-18.2 syncLoop的configCh中的file源码-1660020752.mp4 75.25M
课时3-18.3 syncLoop的configCh中的http源码-1660020759.mp4 26.15M
课时4-18.4 syncLoop的configCh中的merge逻辑-1660020767.mp4 50.57M
章节19-第19章 kubelet的syncLoop的其余监听
课时1-19.1 syncLoop的housekeepingCh流程-1660020780.mp4 98.01M
课时2-19.2 syncLoop的syncCh流程-1660020790.mp4 68.75M
课时3-19.3 syncLoop监听的health-manager-1660020798.mp4 39.75M
章节2-第2章 创建pod时kubectl的执行流程和它的设计模式
课时1-2.1 使用kubectl部署一个简单的nginx-pod-1660019925.mp4 14.60M
课时2-2.2 命令行解析工具cobra的使用-1660019938.mp4 122.80M
课时3-2.3 kubectl命令行设置pprof抓取火焰图-1660019946.mp4 69.63M
课时4-2.4 kubectl命令行设置7大命令分组-1660019954.mp4 64.99M
课时5-2.5 create命令执行流程-1660019962.mp4 81.22M
课时6-2.6 createCmd中的builder建造者设计模式-1660019968.mp4 44.26M
课时7-2.7 createCmd中的visitor访问者设计模式-1660019980.mp4 158.67M
课时8-2.8 kubectl功能和对象总结-1660019986.mp4 17.41M
章节20-第20章 kubelet中内置的cadvisor
课时1-20.1 kubelet中内置的cadvisor-1660020824.mp4 257.07M
章节21-第21章 kubelet中内置的dockershim机制
课时1-21.1 容器和namespace-1660020836.mp4 44.86M
课时2-21.2 容器和cgroups-1660020842.mp4 12.06M
课时3-21.3 容器运行时的乱战-1660020851.mp4 39.62M
课时4-21.4 k8s的cri接口和dockershim的去留-1660020861.mp4 39.62M
课时5-21.5 kubelet中dockershim源码解读-1660020878.mp4 165.78M
章节22-第22章 容器底层技术之镜像原理
课时1-22.1 以nginx镜像为例看OCI中的镜像规范-1660020897.mp4 132.29M
课时2-22.2 联合文件系统简介-1660020917.mp4 136.86M
章节23-第23章 k8s job和cronjob源码解读
课时1-23.1 job的基本功能-1660020928.mp4 39.40M
课时2-23.2 job controller源码解析之初始化工作-1660020942.mp4 106.11M
课时3-23.3 job controller源码解析之syncJob工作-1660020958.mp4 119.45M
课时4-23.4 job controller源码解析之manageJob工作-1660020972.mp4 115.29M
课时5-23.5 cronjob-controller同步主流程源码解析-1660020983.mp4 79.13M
课时6-23.6 cronjob-controller同步核心syncCronJob源码解析-1660020994.mp4 63.95M
章节24-第24章 k8s deployment源码解读