CFN Cloud
Cloud Future New Life
en zh
2025-10-01 · 43 次浏览

Kubernetes 课程导读:丢掉幻想,准备踩坑

这不是一份念经文档,而是一份关于如何在 Kubernetes 泥潭中活下来的生存指南。

市面上有无数的 Kubernetes 教程,大部分一上来就开始跟你过漫长的核心概念:什么是 Pod,什么是 Deployment,什么是 CNI。

等你耐着性子看完了几十页文档,真正发版时遇到 CrashLoopBackOff,你还是会大脑一片空白。

这套“快速入门”不走这条路。我们是一套面向故障排查与动手实践的指南。目标是让你在最短时间内能搭起集群、部署应用,且在出问题时知道该去哪敲哪两行命令找证据。

我们要达成什么目标?

  • 肌肉记忆:掌握那 10 几个每天都在反复敲的核心 kubectl 命令。
  • 看懂黑板报(YAML):读懂并能手写基础的 YAML 清单(apiVersionkindmetadataspec)。
  • 打通血脉:在大脑里建立流量从外部打到 Ingress -> Service -> Pod 的清晰链路。
  • 查案能力:学会看日志(Logs)、看事件(Events),不再对着 Pending 的 Pod 发呆。

你的战壕在哪?(环境要求)

  • 本地单兵作战:Minikube 或 K3s。这是你在自己电脑上就能轻易拉起来的轻量集群。
  • 团队实弹演习:如果有条件,1 个控制平面 + 1 个工作节点的微型集群即可。
  • 手中武器:配置好局域网/环境联通的 kubectl

学习节奏(非常关键)

千万别一口气把概念读完,然后觉得“哦,我懂了”。边敲边看才是唯一的捷径。

前两天你只需要做两件事:

  1. 把集群跑起来,并且证明你的 kubectl 能连上它。
  2. 部署一个破应用,然后故意把它搞坏(比如乱改镜像或者把内存限制调到微乎其微),练习“观察—找错—再救回来”。

实战心法:抛弃“指令思维”

你在过去写 Shell 脚本时,思维是:“我启动它,我检查它,我如果挂了我就重启它”。

在 Kubernetes 里,你要转换成声明式(Declarative)思维:你在 YAML 里告诉集群“我要 3 个正在跑 Nginx 的实例”。剩下的事情,比如资源分配、网线插拔、挂了怎么重启,都是控制器(Controller)的脏活。

所以排障时,别去回忆“我刚才敲了什么指令”,而是去质问集群:“现在的期望状态(Spec)是什么?实际状态(Status)是什么?到底是谁在阻碍收敛?”

高频菜鸟迷局:发上去但连不上

新人的第一道大坎就是:按教程发了一个应用,结果浏览器怎么都打不开。

大部分人会立刻开始怀疑人生、怀疑网络插件、怀疑服务器防火墙。

结果查了俩小时发现:YAML 里的 Service selector 标签和 Pod 的 labels 拼写不一致,导致 Endpoints 里空空如也。

记住这套毫无玄学的“查房四连击”,遇到网络不通,直接按顺序拷问系统:

# 1. 嫌疑人长成什么样了?
kubectl get pods -A

# 2. 嫌疑人为什么是这个状态?
kubectl describe pod -n <ns> <pod>

# 3. 牵红线的 Service 在哪?
kubectl get svc -n <ns>

# 4. Service 到底有没有抓到人?(这步最关键!)
kubectl get endpoints -n <ns> <svc> -o wide

把这个查错回路在大脑里跑通,这门课的钱(如果你没花钱的话就是时间)你就回本 60% 了。

准备好你的武器

下面是启动检查单,如果你的终端能痛快地回显出健康的结果,我们就可以在下一篇正式进入泥潭了:

# 确认武器可用
kubectl version --client

# 确认瞄准器对准了目标集群
kubectl config get-contexts

# 确认目标集群还有活口
kubectl get nodes

祝你好运。