先理清:这门课到底解决什么工作场景

很多运维和后端开发在工作中都会碰到一个痛点:k8s原生的功能或调度逻辑不完全贴合公司业务,想改却无从下手,只能靠外围写脚本或者堆配置硬扛。这门围绕k8s apiserver源码与魔改的课,针对的就是这类深度定制场景。它不是教你日常部署应用,而是面向那些需要在平台层做二次开发、定制鉴权拦截、或者排查apiserver深层次故障的工程需求。如果你平时只是用kubectl提交资源,这门课暂时和你关系不大;但如果你要给团队做内部云平台改造、写自定义准入控制、或者想搞懂 apiserver 收到请求后到底经历了哪些链路,这批资料就值得仔细看。先判断自己是否在这个工作语境里,再决定是否投入时间。

看资料前的准备与建议切入点

资料基于k8s 1.24版本,定位是高级课,对基础有明确门槛。你需要有扎实的Go语言语法基础,熟悉go-restful等Web框架机制,并且对k8s核心概念、Etcd存储结构有清晰认知。资料内容不是逐行翻译源码,而是直接切入实操。建议先从热身章节入手,跟着在本地把apiserver跑起来。不要一上来就去死磕深层链路,先跟着前几讲跑通本地启动、看懂默认ServiceAccount的来源,把请求从client-go到本地apiserver的链路打通,建立对代码运行的整体体感,再往下看拦截逻辑和鉴权改写。

学完能独立做什么及练习建议

跟着这批资料走完,你能独立在本地环境搭建并魔改apiserver,例如剥离默认RBAC逻辑、自定义请求拦截与权限校验,理解资源数据在Etcd中的真实存储结构并据此做针对性适配。资料不是只读材料,必须配合实操:建议自己拉取对应版本源码,按讲解在本地编译运行,每看完一个拦截或鉴权改造点,就动手改一行代码重新编译验证。遇到跑不通的地方,回头去抠go-restful的请求路由和过滤链路。把源码阅读和代码修改绑在一起做,才能真正掌握这门技能,避免看完觉得懂了、动手就卡壳的尴尬。


本课程基于k8s1.24,高级课程。本课程不是网上那种读读源码,然后把函数用中文标注读一遍那种,毫无意义。本课程的主要目的是通过源码讲解、魔改k8s apise

课程目录

*   第一章:热身、复习章 cplist.push('第一章:热身、复习章');/

  *   第1讲:开张课、直接干、本地启动apiserver

  *   第2讲:不使用RBAC鉴权、拦截用户权限请求

  *   第3讲:client-go请求本地apiserver、default这个sa账户从哪来

  *   第4讲:复习课:k8s存在Etcd中的数据结构

  *   第5讲:api server使用的web框架:go-restful入门