这门课的主题很明确:把 Kubernetes 的控制平面和数据平面拆开,顺着源码看一遍关键组件是怎么跑起来的。孔令飞讲 K8s 源码的思路偏向工程实现,不是逐行念代码,而是先讲清楚一个组件解决什么问题、有哪些核心对象、调用链怎么串。对已经会写 YAML、能起集群,但遇到调度异常、控制器不生效、API 对象状态不对时只能靠搜索和试错的开发者来说,这种讲法比较…
这门课的主题很明确:把 Kubernetes 的控制平面和数据平面拆开,顺着源码看一遍关键组件是怎么跑起来的。孔令飞讲 K8s 源码的思路偏向工程实现,不是逐行念代码,而是先讲清楚一个组件解决什么问题、有哪些核心对象、调用链怎么串。对已经会写 YAML、能起集群,但遇到调度异常、控制器不生效、API 对象状态不对时只能靠搜索和试错的开发者来说,这种讲法比较对路。
课程涉及的组件集中在 Kubernetes 主线:kube-apiserver、etcd 存储层、kube-controller-manager、kube-scheduler、kubelet、kube-proxy,以及 client-go 这套客户端库。语言是 Go,所以阅读源码前需要对 Go 的接口、channel、informer 有基本认识。课程里反复出现的几个结构值得留意:
把这几条链路吃透,K8s 里大部分「为什么没生效」的问题都能定位到具体环节,而不是停在 kubectl describe 的输出上猜。
资料以视频讲解配源码片段为主,适合按组件分块看。建议的用法是:打开对应版本的 Kubernetes 源码仓库,把课程里提到的方法名、结构体名作为锚点,边看边跳转到本地源码里对照。课程本身不能替代源码,它的价值在于告诉你「先看哪个文件、这个函数在链路里的位置、哪些分支是主线、哪些可以跳过」。如果只看视频不动手翻源码,收获会打对折;反过来,如果已经有目标版本源码在手,这套讲解能省掉大量找入口的时间。
从工程复用角度看,这门课能沉淀下来的东西主要有几块。一是 client-go 的 informer 与 workqueue 组合,这是写 operator 和自定义控制器的标准骨架,理解了就能直接套用到自己的 CRD 场景。二是调度框架的插件接口,如果需要做定制调度策略或者资源感知调度,这里有现成的扩展点可以参考。三是 apiserver 的 admission 机制,做准入控制、资源校验、多租户隔离时用得上。实战部分通常会把这些机制落到具体场景里,比如排查控制器不工作、调度不上去、Pod 卡在某个阶段,这类问题的排查路径本身就是可复用的方法论。
如果按顺序推进,比较稳的路线是先看 apiserver 和 etcd 的交互,建立「对象怎么存取」的认知;再看 controller 和 informer,理解声明式 API 的闭环;然后是 scheduler,最后是 kubelet 和运行时。每看完一个组件,用 kubectl 制造一个对应的异常状态,再回到源码里找触发点。这样比连续刷完所有视频再回头复习更有效。对有 Go 基础、日常在维护集群或写控制器的开发者,这门课适合当成源码阅读的对照材料,而不是从零入门的教程。
深入理解Kubernetes核心原理,实战提升
系统剖析Kubernetes源码,结合实战案例,助你掌握容器编排技术。
极客时间-孔令飞带你深入Kubernetes源码,实战掌握容器编排。
📁 images 📁 873844 a456a6732b5dccb0840f8f4c45bcb679.jpg [247.3 KB] 7509b3ed53f6e8aaf18bfa9b3a8d1719.jpg [49.1 KB] 5758cfca790cda81aa453a78afd0fbcc.jpg [588.8 KB] ef0dbf4a23c26f46ff2f2a8381f16bf8.jpg [70.7 KB] a89b798b653a7fbfd462266164435ce9.jpg [48.6 KB] 9b8aedc1fa32c0a2d61ec65a8e4b2340.jpg [46.3 KB] de7616ed331c1a237f181ab52bd32c11.jpg [50.5 KB] faee11a18c89f457e67d2c996b0def16.jpg [39.1 KB] 9b15fde858a53eb1c02e8ee4b49463a5.jpg [118.7 KB] 2d7d99d2f104827bf307f91869bdebb5.jpg [68.9 KB] 📁 872315 d42010ae9bdabe5dc5b7aa68a90d7b45.png [95.9 KB] f29bf84db6494cd978b45b1b9c58c2b8.png [77.2 KB] 📁 879893 44a5177ca5e8f084d7bdf28d32496a94.jpg [638.0 KB] 217a8836d271f56ea0a51b99dd53d9dc.jpg [135.5 KB] 47d04907ff32yy21848a9fbff9b05b1f.jpg [423.1 KB] 17c9b853453bf750a65aa37a0898576c.jpg [249.4 KB] 📁 880630 63f0c836byy9d21cd60594a901610989.jpg [89.3 KB] 56667a4a0c8e4c066f5b2b1b6fb72573.jpg [307.4 KB] 1420c95a6842a8569c8fae346d7988fb.jpg [198.5 KB] ff64e6568d37070fe9e4f1325ebcabfc.jpg [162.0 KB] 95d302eb40ba8f9944069a686ffcb8c3.jpg [72.5 KB] 44aecf83ed67cd9032ae59f0dfff13b8.jpg [155.2 KB] 📁 878458 b8debb68290e23f8caa3c908d30258a9.jpg [366.2 KB] 60e3cbf3c6973aa4ffba48880b549b97.jpg [162.2 KB] 📁 876557 d88b132e2187635c13fb06194736799d.jpg [287.1 KB] 6797e3abd29032a531383ae80a65f089.jpg [375.7 KB] 📁 880707 3c98718265501e0d74a3d51f52abe9de.png [45.5 KB] ff0bd2fc06aeb8cd38dd3407bd1630cc.jpg [98.1 KB] cd232131bf72bf4760a136b9b99236cf.jpg [227.0 KB] 37dc4fd27b25cf5b4598df49a7588367.jpg [215.5 KB] 0e72c221de47effee92ef0c9edda93da.jpg [138.6 KB] d1ayybe296f357ff2362a24ba89f7ed5.jpg [249.5 KB] 📁 883922 ceb9b052fb1e527bcf881966665150c3.jpg [53.7 KB] 📁 881064 a25a803b84be281c674ce9297589ae50.jpg [325.8 KB] 266d47856c4996625f60db48ca4a3bf4.jpg [215.2 KB] 📁 882228 dc215f357f388938c0d02ff40cf02ef6.jpg [47.6 KB] aae8de57705f00923231efaa9db3b9f3.jpg [35.2 KB] 789b6441db442cc4978447c378a5yy5b.jpg [546.1 KB] 3a4f8da31d29657342eee02956c385c0.jpg [156.6 KB] 4c6fb57baaccd5bf41483efc255fddc6.jpg [41.8 KB] 📁 881539 a2a89e93d9392a62eae8d115527afd6e.jpg [158.7 KB] 📁 882863 d3e4a8af2cb6356d331fcf6f364f68fa.jpg [87.4 KB] a3890e6a4b7135af2d3e2cdd0yyb813c.jpg [23.1 KB] 📁 876130 f5802a2cce75014b59854da19d46317b.jpg [843.3 KB] 📁 879171 📁 871182 6ecba232d868823a8951ce5266c3532d.jpg [222.5 KB] da6704107eaa0b512821997fc2fd6062.jpg [95.7 KB] 📁 877649 f50eaa0e24bc56597535567c53589afd.png [122.4 KB] fd19378e0c2237479c6790fc9b9d97dc.jpg [201.6 KB] 6e5c7f9fbd96262d0fb8da7f666f62db.jpg [71.5 KB] 0a14571b861c447a2091b513157424e3.jpg [173.9 KB] 📁 883163 📁 871133 📁 870560 f252fe2cf2f3e6b4e5f4af5005cf1772.jpg [208.6 KB] cc8f0b2yy23e51deb6fcfdb26cd0f279.jpg [104.2 KB] ba30365ab49a56a8b514717589d4ab2f.jpg [122.4 KB] 575e2334bbeb339dc962f7812cc7e563.jpg [109.2 KB] 30f1abe42ee4f533a657b31d2ac4880b.jpg [52.5 KB] 39258f9b44f0b1abfdyy2e8d95a893ac.png [47.9 KB] 709476f71db39de1fb223c1d373ff5e3.png [394.2 KB] 📁 879001 1e257b6df0a3d62c44b542bf6b7e412f.jpg [20.6 KB] 678f4c3076348a25660080075e5b5c5a.jpg [117.1 KB] ce919644249f03f3e35a9111bd23f2d8.jpg [338.4 KB] 📁 877873 41c7cf254fbd05daa1d121b50653bd01.jpg [85.6 KB] 5bf0698c981028397075cb76c942c7fd.jpg [994.2 KB] 27fcyy9ccf3beb76398c9762d168fc3b.jpg [133.4 KB] 📁 875739 27159b4f9f7fb6c135d69d539692d24c.png [313.4 KB] 1364822283796c5339eeecfd451e889a.png [628.4 KB] 98ef4160be03035bc3230389dfbbba79.jpg [296.0 KB] 📁 869984 0316f129037bd2f7d3576b66c47980e6.jpg [69.9 KB] 📁 872307 📁 869965 927652f1f6ba1ec7173bbdb545b1a022.jpg [120.9 KB] 📁 872303 4c15fdb1a76d70b26a69bc49274dccf7.jpg [25.6 KB] d981515afccc3336220334yy06aa5d75.jpg [56.2 KB] d995969c25ac61e53cc515177879e596.jpg [169.7 KB] 14afd67eb118d1b71f8632ef2c761e8f.jpg [36.2 KB] 📁 873916 f08db8cyybe6e8ed01b7e38e56ac292d.jpg [200.5 KB] d9735a7256453dc1c0cde04f0afb1634.jpg [172.7 KB] 📁 876868 1a0545107b3b45db157aff0b6d863199.png [203.8 KB] 📁 871131 bb87d88e8414c268d6cbd03916ae756d.jpg [102.2 KB] bed1816752cc80c52ee7ddf7c5585e68.png [19.8 KB] 11f148baa764cf3431c030f8ddd50049.jpg [93.0 KB] 2c6b4697615c17fcf7cd1444f5b1f269.png [44.2 KB] 📁 videos 📁 加餐|探索Kubernetes源码学习方法与学习价值 04|为什么要学习云原生技术及开发?.mp3 [2.1 MB] 22|Kubernetes支持哪些RESTfulAPI接口?【公众号:CunWorkNotes】.mp3 [918.0 KB] 23|如何使用go-restful开发一个Web服务器?【公众号:CunWorkNotes】.md [23.3 KB] 12-Kubernetes集群部署方法有哪些及如何选择?.pdf [2.0 MB] 15|通过Kubernetes应用构建模型来看如何构建应用?.md [19.7 KB] 23|如何使用go-restful开发一个Web服务器?.pdf [2.3 MB] 22|Kubernetes支持哪些RESTfulAPI接口?.md [15.9 KB] 18|Kubernetes如何定义标准化资源对象?.mp3 [1.7 MB] 25|KubernetesHTTP请求处理流程详解.mp3 [2.1 MB] 21-请求路径构建(下):Kubernetes如何根据资源对象构建请求路径?.pdf [3.4 MB] 01|究竟什么是云原生?.mp3 [2.1 MB] 26|KubernetesHTTP请求逻辑核心功能点详解.mp3 [1.0 MB] 08|Kubernetes架构及核心组件介绍.pdf [7.0 MB] 15|通过Kubernetes应用构建模型来看如何构建应用?.mp3 [2.4 MB] 12-Kubernetes集群部署方法有哪些及如何选择?.md [16.8 KB] 06|如何高效阅读Kubernetes源码?【公众号:CunWorkNotes】.md [9.3 KB] 08|Kubernetes架构及核心组件介绍.md [21.4 KB] 19|Kubernetes资源对象实现源码剖析【公众号:CunWorkNotes】.pdf [2.8 MB] 04|为什么要学习云原生技术及开发?.md [12.6 KB] 21-请求路径构建(下):Kubernetes如何根据资源对象构建请求路径?.mp3 [2.9 MB] 10|通过Pod创建流程来了解Kubernetes.mp3 [1.6 MB] 26|KubernetesHTTP请求逻辑核心功能点详解.pdf [2.0 MB] 16-剖析Kubernetes应用构建模型.mp3 [1.4 MB] 09|Kubernetes核心概念和资源介绍.mp3 [3.2 MB] 05|如何学习云原生技术?.mp3 [1.9 MB] 17-Kubernetes如何设计REST资源?.md [18.1 KB] 15|通过Kubernetes应用构建模型来看如何构建应用?.pdf [2.2 MB] 27|Kubernetes如何进行请求参数校验?.mp3 [1.3 MB] 27|Kubernetes如何进行请求参数校验?.md [17.6 KB] 03|云原生中有哪些核心技术栈?(下).md [17.1 KB] 25|KubernetesHTTP请求处理流程详解.md [43.4 KB] 11|Kubernetes代码仓库介绍.pdf [4.9 MB] 07|如何给Kubernetes社区贡献源码?.mp3 [1.7 MB] 09|Kubernetes核心概念和资源介绍.pdf [2.9 MB] 25|KubernetesHTTP请求处理流程详解.pdf [2.2 MB] 20-请求路径构建(上):如何设置RESTfulAPI接口路径?.pdf [3.1 MB] 01|究竟什么是云原生?.md [12.3 KB] 加餐|探索Kubernetes源码学习方法与学习价值.md [639.0 B] 04|为什么要学习云原生技术及开发?.pdf [2.9 MB] 06|如何高效阅读Kubernetes源码?.pdf [2.3 MB] 10|通过Pod创建流程来了解Kubernetes.pdf [3.4 MB] 12-Kubernetes集群部署方法有哪些及如何选择?.mp3 [2.7 MB] 22|Kubernetes支持哪些RESTfulAPI接口?.pdf [1.5 MB] 16-剖析Kubernetes应用构建模型.pdf [2.3 MB] 20-请求路径构建(上):如何设置RESTfulAPI接口路径?.mp3 [2.3 MB] 08|Kubernetes架构及核心组件介绍.mp3 [3.7 MB] 18|Kubernetes如何定义标准化资源对象?.pdf [2.4 MB] 27|Kubernetes如何进行请求参数校验?.pdf [1.9 MB] 17-Kubernetes如何设计REST资源?.pdf [3.0 MB] 18|Kubernetes如何定义标准化资源对象?.md [17.5 KB] 13-如何配置和创建一个Kind集群?.pdf [2.9 MB] 11|Kubernetes代码仓库介绍.mp3 [1.3 MB] 05|如何学习云原生技术?.md [12.1 KB] 加餐|探索Kubernetes源码学习方法与学习价值.pdf [1.1 MB] 05|如何学习云原生技术?.pdf [2.8 MB] 06|如何高效阅读Kubernetes源码?.mp3 [1.6 MB] 01|究竟什么是云原生?.pdf [2.3 MB] 23|如何使用go-restful开发一个Web服务器?.mp3 [1.7 MB] 20-请求路径构建(上):如何设置RESTfulAPI接口路径?.md [16.4 KB] 02|云原生中有哪些核心技术栈?(上).pdf [4.9 MB] 开篇词|如何从源码视角深度学习Kubernetes?.mp3 [1.2 MB] 19|Kubernetes资源对象实现源码剖析.md [32.2 KB] 24|Kubernetes路由构建源码剖析.md [49.7 KB] 09|Kubernetes核心概念和资源介绍.md [20.8 KB] 14|如何在Kubernetes集群中部署Web服务?.md [38.8 KB] 17-Kubernetes如何设计REST资源?.mp3 [2.5 MB] 13-如何配置和创建一个Kind集群?.md [17.9 KB] 26|KubernetesHTTP请求逻辑核心功能点详解.md [13.7 KB] 16-剖析Kubernetes应用构建模型.md [10.8 KB] 开篇词|如何从源码视角深度学习Kubernetes?.md [7.1 KB] 11|Kubernetes代码仓库介绍.md [18.3 KB] 14|如何在Kubernetes集群中部署Web服务?.mp3 [3.1 MB] 24|Kubernetes路由构建源码剖析.pdf [4.1 MB] 14|如何在Kubernetes集群中部署Web服务?.pdf [2.4 MB] 21-请求路径构建(下):Kubernetes如何根据资源对象构建请求路径?.md [22.4 KB] 07|如何给Kubernetes社区贡献源码?.md [12.6 KB] 13-如何配置和创建一个Kind集群?.mp3 [1.4 MB] 02|云原生中有哪些核心技术栈?(上).md [20.0 KB] 03|云原生中有哪些核心技术栈?(下).pdf [2.8 MB] 24|Kubernetes路由构建源码剖析.mp3 [2.4 MB] 03|云原生中有哪些核心技术栈?(下).mp3 [2.9 MB] 02|云原生中有哪些核心技术栈?(上).mp3 [3.2 MB] 10|通过Pod创建流程来了解Kubernetes.md [20.5 KB] 开篇词|如何从源码视角深度学习Kubernetes?.pdf [1.8 MB] 07|如何给Kubernetes社区贡献源码?.pdf [2.5 MB] 19|Kubernetes资源对象实现源码剖析.mp3 [2.1 MB]
🎉 祝您学习愉快!