如果你已经能熟练写 Deployment、配 Service、调 Helm Chart,却在一道「Pod 卡在 Terminating 三十秒」的面试题前说不清背后发生了什么,那这门课的定位就很清楚了:它补的不是用法,是用法底下那层东西。
先自查:这几个问题你能答上来几个
不用翻书,凭现在的理解试着回答:
- kubectl apply 之后,请求经过 apiserver 的哪些环节才落进 etcd?
- controller-manager 里的控制器是怎么被「唤醒」的,为什么它不需要轮询整张表?
- 一个 Pod 被调度到节点后,kubelet 到 CRI、CNI、CSI 这三条链路各自在什么时候被调用?
- Service 的 ClusterIP 是怎么变成 iptables 或 IPVS 规则的,kube-proxy 在哪个事件上做同步?
- Informer 的 Reflector、DeltaFIFO、Indexer 各管什么,为什么要有这套结构而不是直接 watch?
能顺畅答出三个以上,这门课对你大概偏浅;答不上两个以上,说明你现在的排障多半靠搜索和试错,而不是靠对机制的判断。
它讲的是哪一层源码
Kubernetes 代码量摆在那里,没人能从头读到尾。课程把范围收在几条主干上:apiserver 的请求处理与准入链路、etcd 的存储与 watch 机制、client-go 的 informer 与 workqueue 这一套客户端框架,以及 kube-scheduler、kube-controller-manager、kubelet、kube-proxy 各自的核心循环。这几条线是相互咬合的——scheduler 依赖 informer 拿到的本地缓存做决策,controller 依赖 workqueue 做重试,kubelet 的 PLEG 又在持续比对期望状态与实际状态。把它们放在一起看,才能理解为什么集群是「最终一致」而不是「立即生效」。
配套的实战部分不是另起炉灶写 demo,而是把源码里的机制还原成可操作的动作:改一处控制器逻辑看调谐行为怎么变,用一个自定义资源走一遍 apiserver 的注册与持久化,抓一次调度失败看事件是怎么被记录出来的。这种练法的好处是,你调完代码之后对日志和事件的敏感度会明显不一样。
学之前最好先有的底子
- Go 语言能读:接口、goroutine、channel、context 这几样要看得懂,否则 client-go 那部分会比较吃力。
- 集群操作不缺:至少独立部署过、升过级、看过 kubelet 日志。
- Linux 基础还在:namespace、cgroup、iptables 的基本概念得清楚,否则容器运行时那几节容易变成背结论。
缺哪块先补哪块,硬啃源码的效率会很低。
看完应该能回答的问题
- 为什么 apiserver 是无状态的,集群状态却不会丢?
- 一个对象从提交到真正生效,中间经过多少个组件,各自负责哪一段?
- 为什么大量对象同时变更时,控制器不会被打爆?
- 节点 NotReady 之后,上面的 Pod 经历哪些状态迁移?
- 要自己写一个 Operator,哪些轮子可以直接用 client-go 的,哪些必须自己实现?
这五个问题基本覆盖了这门课的主干。如果你的日常工作里出现过「现象能描述、原因说不清、只能重启试试」的场景,那这些就是你真正要补的缺口。带着具体的故障去学,比按顺序刷一遍要划算得多。
极客时间-孔令飞- Kubernetes 源码剖析与实战
深入理解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源码学习方法与学习价值
1592c56f-1963e51d5d9-0000-0000-01d-dbacd.mp4 [903.1 MB]
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]适合人群
- Kubernetes初学者
- 容器技术爱好者
- 运维工程师
学习收获
祝您学习愉快!
学有所成,前程似锦!






