📌 项目地址:kelseyhightower/kubernetes-the-hard-way | ⭐ 50,073 颗星 | 📜 未标注
为什么值得花几天时间“走远路”
kubectl 谁都会敲,云控制台点几下就能起一个集群。但集群底下发生了什么?apiserver 的证书是怎么签出来的?etcd 在哪台机器上跑?Pod 的网络包是怎么路由到另一台节点的?这些问题,托管服务替你回答了,代价是你永远不用理解它们。
Kubernetes The Hard Way 就是把这些被藏起来的东西全部摊开。作者是 Kelsey Hightower,前 Google 工程师、Kubernetes 社区里的知名人物。这个仓库有 50,073 颗星,定位一句话说清:不用脚本、不用自动化工具,手工完成引导集群所需的每一步。教程副标题里写得很直白,它是为学习优化的,故意走远路。
README 里有一句提醒值得记住:教程成果不应视为可用于生产环境,社区支持也有限。所以别拿它搭公司集群,拿它补课。
你实际要做的事
先说硬件:需要 4 台 ARM64 或 AMD64 的虚拟机或物理机,连在同一个网络里。
整个教程拆成 13 个 Lab,按顺序走:
- Lab 01-03:环境准备、Jumpbox 设置、计算资源分配
- Lab 04:搭建 CA,手工签发各组件通信用的全部 TLS 证书
- Lab 05:生成用于认证的 Kubernetes 配置文件
- Lab 06:生成数据加密密钥和配置(Secret 的静态加密靠它)
- Lab 07:引导 etcd 集群
- Lab 08:引导控制面组件
- Lab 09:引导 Worker 节点
- Lab 10-12:配置 kubectl 远程访问、配 Pod 网络路由、冒烟测试
- Lab 13:清理环境
最终成果是控制面跑在单节点上、带两个 Worker 节点的集群。规模不大,但核心概念全在里面。
用的组件版本:Kubernetes v1.32.x、containerd v2.1.x、CNI v1.6.x、etcd v3.6.x。注意这些版本都比较新,老博客上的命令可能会对不上,照 docs/ 目录里的原文走最稳妥(README 本身不含命令,每一步的具体操作都在各个 Lab 文档里)。
它难在哪,价值也就在哪
我觉得这个教程最劝退也最值钱的部分是 Lab 04 到 Lab 06。三整章都在跟证书和密钥打交道:apiserver、kubelet、etcd 各自需要什么证书、SANs 怎么填、kubeconfig 里的凭据从哪来。签错一个字段,后面排错半天。但恰恰是这段经历,让你以后遇到 “certificate has expired” 或 “Unauthorized” 这类报错时,知道从哪里查起。
Lab 11 的 Pod 网络路由也一样。多数人装个 CNI 插件就完事,这里你要自己给每个节点的 Pod CIDR 配路由,配完才明白 Flannel、Calico 那些插件到底替你做了什么。
和 kubeadm 的关系
经常有人问:kubeadm 也能学底层,为什么不直接用它?我的看法是两者不冲突。kubeadm 是生产可用的部署工具,它把证书、etcd、组件启动都封装好了,你学到的是流程;The Hard Way 把同样的东西全部展开成手工步骤,你学到的是原理。先走一遍 The Hard Way,再用 kubeadm 部署,你会清楚每一步它替你做了什么。
两个注意点
许可证是 CC BY-NC-SA 4.0(署名-非商业-相同方式共享)。公司内部拿来做培训一般没问题,但想做成付费课程就得留意非商业条款,商用前建议先确认。
门槛方面,你得熟悉 Linux 命令行和网络基础。如果目标只是快速起个集群跑业务,这个教程不适合你,直接用 kubeadm 或云托管服务。但如果你的工作是排查 etcd、证书、apiserver 的问题,或者在准备 CKA/CKS 认证,这一遍手工搭建会显著拉高你对 Kubernetes 的理解上限。