Skip to content

K8s Code 编程教程 ​

目标:把 K8s 从"会用 kubectl"提升到 "能编程、能手写 Controller/Operator" 的大师级水平。 与 S7 K8s 理论文档 互补:那边讲"为什么",这里讲"怎么写、怎么跑、怎么验"。

你需要什么 ​

  • 本机已装:Go 1.26+、Docker、kubectl、minikube(本教程默认你有一个正在运行的 minikube 单节点集群,K8s v1.35 左右)。
  • 检查环境:
bash
kubectl cluster-info     # 控制面可达
kubectl get nodes        # 节点 Ready
go version               # Go 1.26+

关于 Go 模块下载

本机 proxy.golang.org 可能超时,拉取 client-go 时请使用 GOPROXY=https://goproxy.cn,direct:

bash
export GOPROXY=https://goproxy.cn,direct

学习路线 ​

07-10 是"从会用变成会写"的分水岭(黄色),04-06 偏对象实操,11-13 是深入与排障,14 用于面试收口。

章节导航 ​

章主题代码位置本章产出
01 环境准备与 kubectl 速查kubeconfig/context/常用命令—集群状态核对能力
02 Pod 与容器生命周期探针/initContainer/生命周期code/k8s/manifests/02_pod/写出带探针的 Pod
03 Deployment 与滚动发布ReplicaSet/滚动更新/回滚code/k8s/manifests/03_deployment/发布不宕机
04 Service/Ingress/DNSClusterIP/NodePort/Ingresscode/k8s/manifests/04_service/流量路由
05 配置与存储ConfigMap/Secret/PV/PVCcode/k8s/manifests/05_config_storage/配置与持久化
06 资源管理与 HPA/Jobrequests/limits/QoS/HPA/Jobcode/k8s/manifests/06_hpa_job/自动扩缩容
07 client-go:连接与 CRUDtyped client 增删改查code/k8s/client/01_connect 02_crud用 Go 操作集群
08 client-go:Informer 与 WorkqueueWatch/Informer/Workqueuecode/k8s/client/03_watch 04_workqueue事件驱动编程
09 手写 ControllerInformer+Workqueue+Reconcilecode/k8s/controller/counter-controller真集群最小控制器
10 CRD 与 OperatorCRD/controller-runtime Reconcilercode/k8s/operator/自定义资源+控制循环
11 调度器深入过滤/打分/亲和性/污点容忍code/k8s/manifests/11_scheduler/ scheduler-demo解释 Pod 去哪台机器
12 网络与安全深入NetworkPolicy/RBAC/SAcode/k8s/manifests/12_network/最小权限
13 故障排查与生产实践排障剧本/优雅退出/可观测性各章 manifests快速破案
14 面试题集15+ 高频题—面试收口

使用方法 ​

  1. 每章先读概念 + 看图(mermaid),再动手 apply / go run / go test。
  2. 代码练习沿用仓库惯例:solution.go 是带 TODO 的骨架,answer/answer.go 是参考答案,先自己写再对照。
  3. 连集群的代码(07/09 章)直接 go run 对着你的 minikube 跑;模拟类练习(workqueue/调度打分)go test 即可。
  4. 学完 07-10,你就完成了"从会用 kubectl 到能写控制器"的跃迁——这在简历和面试里都是硬通货。
bash
# 全部代码验证
cd code/k8s
go build ./...
go test ./...          # 模拟类练习

持续学习,持续构建。