学习 Kubernetes 最容易陷入两个误区:只背命令,或者一开始就堆很多生态工具。更有效的路线是先理解核心对象和请求链路,再通过真实应用、故障和运维任务逐层加深。下面给出一条从入门到生产运维的路线。
第一阶段:容器与 Linux 基础
先掌握镜像、容器、进程、网络命名空间、挂载和 cgroup。Linux 方面至少熟悉进程、端口、DNS、路由、文件权限、systemd 和日志。
目标不是成为内核专家,而是能回答:容器为何能隔离、资源为何受限、网络包从哪里走、应用为何启动失败。
建议实验:
构建一个最小 Web 镜像。
以非 root 用户运行。
挂载配置和数据目录。
设置 CPU/内存限制并观察行为。
排查端口、DNS 和文件权限问题。
第二阶段:核心对象与声明式管理
依次学习 Namespace、Pod、Label/Selector、Deployment、Service、ConfigMap、Secret、Job 和 DaemonSet。每个对象都要理解“期望状态—控制器—实际状态”的关系。
练习时优先保留 YAML 到版本库,而不是长期依赖命令式创建。学会使用:
kubectl get
kubectl describe
kubectl logs
kubectl explain
kubectl apply
kubectl diff
阶段目标:能把一个带配置、探针、资源限制和 Service 的应用稳定部署出来,并能更新和回滚。
第三阶段:把应用真正暴露出去
学习集群网络模型、CoreDNS、Service、EndpointSlice、Ingress、TLS 和 NetworkPolicy。
完整实验应包含:
前端与后端两个 Deployment。
集群内通过 Service 名称通信。
Ingress 按域名或路径暴露服务。
TLS 终止。
默认拒绝网络策略,再精准放行应用与 DNS。
故意改错 selector、端口和 DNS,按链路排查。
第四阶段:配置、存储与有状态应用
理解 ConfigMap/Secret 的更新方式、emptyDir、PV、PVC、StorageClass、StatefulSet 和备份恢复。
建议部署一个数据库实验环境,但不要把“数据库能启动”当作生产方案。继续验证:Pod 重建后数据是否保留、卷能否扩容、备份能否恢复、节点故障时如何迁移。
第五阶段:调度、可靠性与发布
学习 requests/limits、QoS、探针、优雅终止、滚动更新、HPA、PodDisruptionBudget、亲和性、污点与容忍度。
这一步要从“资源能运行”升级到“服务能持续运行”:
新版本没 Ready 时不能接收流量。
应用终止前完成连接排空。
节点维护时保留足够副本。
高峰期能扩容,低峰期不会浪费过多资源。
升级失败可以快速回滚。
第六阶段:集群安装与生命周期
使用 kubeadm 搭建自己的实验集群,理解 API Server、etcd、Scheduler、Controller Manager、kubelet、CRI、CNI 和 CSI。
至少实践:
初始化控制面和加入节点。
证书检查与续期。
etcd 快照和恢复。
节点 drain、维护与重新加入。
小版本升级。
控制面或节点故障排查。
生产高可用还涉及负载均衡、多控制面、etcd 拓扑、备份和灾难恢复,应在掌握单控制面流程后继续扩展。
第七阶段:安全基线
把安全作为默认配置,而不是最后补丁:
RBAC 最小权限和专用 ServiceAccount。
Pod Security Admission。
非 root、禁止提权、只读根文件系统和 seccomp。
NetworkPolicy。
镜像扫描、固定摘要和供应链治理。
etcd 加密、审计日志和运行时检测。
通过 kube-bench 等工具发现问题,再结合实际部署方式人工判断。扫描通过不代表没有风险。
第八阶段:可观测性与故障处理
建立指标、日志、事件和链路追踪的基本体系。重点不是安装多少工具,而是能从告警定位到用户影响和根因。
建议维护一套故障实验库:
CrashLoopBackOff、OOMKilled、探针失败。
Service 无 Endpoints、DNS 失败、NetworkPolicy 阻断。
PVC Pending、卷挂载错误。
节点 NotReady、磁盘压力、证书过期。
API Server 或 etcd 配置错误。
每次练习记录现象、证据、根因、修复、验证和预防项。
第九阶段:交付与平台化
熟悉 Helm、Kustomize、CI/CD、GitOps 和策略治理。工具选择应服务于可重复、可审计和可回滚的交付目标。
团队规模扩大后,可以建设标准模板、命名空间基线、自动策略、成本视图和自助发布入口,但不要过早隐藏 Kubernetes 的基本行为,否则平台故障时很难排查。
一条可执行的 12 周计划
第 1~2 周:容器、Linux、Pod 与 kubectl。
第 3~4 周:Deployment、Service、配置和探针。
第 5 周:DNS、Ingress 与 NetworkPolicy。
第 6 周:PV/PVC、StatefulSet 与备份。
第 7 周:调度、资源、发布与高可用。
第 8~9 周:kubeadm、升级、证书和 etcd。
第 10 周:RBAC、Pod Security 和容器加固。
第 11 周:监控、日志和故障注入。
第 12 周:完成一个端到端项目并写复盘。
最终项目建议
部署一个包含前端、API、数据库和定时任务的小系统,要求具备:私有镜像、配置与 Secret、Ingress TLS、NetworkPolicy、持久卷、资源限制、探针、滚动发布、备份、监控、审计与恢复文档。
当你能够在不看教程的情况下部署、升级、制造故障、定位并恢复这个项目,才真正从“会用 Kubernetes”进入“能维护 Kubernetes”。
参考资料
如何判断自己真正掌握了
能够从用户请求反推 Ingress、Service、EndpointSlice、Pod 和依赖链路。
能够解释调度失败、CrashLoopBackOff、NotReady、DNS 与网络故障的证据。
能够设计升级、备份、恢复、容量、监控、安全和回滚方案。
遇到故障先建立假设并验证,而不是随机执行命令。
学习成果清单
□ 所有实验 YAML 和说明文档均进入版本库
□ 完成一次集群安装、版本升级和失败回滚
□ 完成 etcd 备份恢复和应用数据恢复演练
□ 完成网络、存储、调度和节点故障注入
□ 能用指标、日志、事件和审计记录形成完整证据链
□ 最终项目具备发布、监控、安全、容量和应急手册
总结
Kubernetes 学习应沿着“容器基础—核心对象—请求链路—生产运维—安全与可观测性—故障演练”逐层推进。每个阶段都用可复现实验和复盘验收,才能从会执行命令成长为能对生产结果负责的维护者。