这门课解决什么问题 K8s本质是容器编排与自动运维系统,但概念繁多、机制抽象。这门课聚焦核心运转逻辑,把复杂集群调度拆解为可理解的工程模块。它不空谈理论,而是直接回答:怎么保证应用不挂、怎么做到更新不中断、怎么根据流量动态增减资源。通过奶茶店比喻等具象化拆解,帮你建立从Pod到HPA的完整心智模型,把K8s从黑盒变成可配置、可落地的工程工具。 适合什么基础…
K8s本质是容器编排与自动运维系统,但概念繁多、机制抽象。这门课聚焦核心运转逻辑,把复杂集群调度拆解为可理解的工程模块。它不空谈理论,而是直接回答:怎么保证应用不挂、怎么做到更新不中断、怎么根据流量动态增减资源。通过奶茶店比喻等具象化拆解,帮你建立从Pod到HPA的完整心智模型,把K8s从黑盒变成可配置、可落地的工程工具。
建议具备基础容器概念(如Docker镜像与容器运行原理),以及轻量级命令行操作经验。不需要深入Linux内核知识或复杂网络底层原理,但需能接受抽象概念(如声明式API、控制器模式)。如果你正从单机部署向集群化部署过渡,这门课能直接作为工程落地的起点。
第一块是K8s本质定义与核心价值,理解它作为“容器管家+自动运维机器人”的定位。第二块是核心组件的工程映射,重点拆解Pod、Deployment、Service、Ingress、ConfigMap/Secret、PVC、HPA这七个关键模块,建立它们之间的调用与依赖关系。第三块是项目结构的设计思路,学习如何用声明式配置管理应用生命周期。
能搭建本地K8s集群,部署有状态应用,配置扩缩容与存储方案。理解高可用部署的底层逻辑,能排查常见故障。独立完成从单机容器到集群编排的工程迁移,为后续云原生架构设计打下基础。
建议边看边用CLI实操,对照奶茶店比喻理解每个组件。先跑通单机部署,再逐步引入集群与有状态应用。配置文件建议直接写入本地集群,修改后观察Pod状态变化,加深对声明式API的理解。
K8s = 容器管家 + 自动运维机器人
| K8s概念 | 奶茶店比喻 | 你的项目里对应 |
|---|---|---|
| Node(节点) | 奶茶店的分店 | 服务器 |
| Pod(豆荚) | 一个员工 | 容器 |
| Deployment(部署) | 店长 | 管前端/后端员工的管理员 |
| Service(服务) | 前台接单员 | 把请求分发给Pod |
| Ingress(入口) | 门店招牌 | 公网入口) |
| ConfigMap(配置) | 员工手册 | nginx-frontend-config |
| Secret(密钥) | 保险柜密码 | (镜像仓库密码) |
| PVC(存储) | 仓库货架 | (数据库硬盘) |
| HPA(自动扩缩) | 智能排班系统 | 自动加人/减人 |
# 查看Pod(最常用)
kubectl get pods -n waterproof
# NAME READY STATUS
# waterproof-frontend-8687f9d787-9snsw 1/1 Running # 查看Pod详情(排错用)
kubectl describe pod -n waterproof waterproof-frontend-xxx # 查看Pod日志
kubectl logs -n waterproof -l app=waterproof-frontend # 进入Pod内部(调试用)
kubectl exec -it -n waterproof waterproof-frontend-xxx -- sh # 删除Pod(会自动重建)
kubectl delete pod -n waterproof waterproof-frontend-xxx# 查看Deployment
kubectl get deployment -n waterproof
# NAME READY UP-TO-DATE AVAILABLE
# waterproof-frontend 1/1 1 1 # 更新镜像(你刚做的)
kubectl set image deployment/waterproof-frontend -n waterproof \ web=sjk2026-registry.cn-hangzhou.cr.aliyuncs.com/sjk2026_public/waterproof-frontend:0.1.4 # 查看更新状态(最重要!)
kubectl rollout status deployment/waterproof-frontend -n waterproof # 扩容(人多了加员工)
kubectl scale deployment/waterproof-frontend -n waterproof --replicas=3 # 缩容(人少了减员工)
kubectl scale deployment/waterproof-frontend -n waterproof --replicas=1 # 回滚(新版本有问题)
kubectl rollout undo deployment/waterproof-frontend -n waterproof # 查看历史版本
kubectl rollout history deployment/waterproof-frontend -n waterproof# 查看Service
kubectl get svc -n waterproof
# NAME TYPE CLUSTER-IP EXTERNAL-IP
# waterproof-frontend-lb LoadBalancer 1.1.1.1 2.2.2.2
# waterproof-backend ClusterIP 112.118.1.124 <none> # 查看Service详情
kubectl describe svc -n waterproof waterproof-frontend-lb # 测试Service连通性(从Pod内)
kubectl exec -it -n waterproof backend-pod -- curl http://postgres:5432# 查看配置
kubectl get configmap -n waterproof
kubectl get secret -n waterproof # 创建ConfigMap(从文件)
kubectl create configmap nginx-config -n waterproof --from-file=default.conf # 查看配置内容
kubectl get configmap nginx-frontend-config -n waterproof -o yaml # 修改配置(热更新)
kubectl edit configmap nginx-frontend-config -n waterproof
# 改完要重启Pod
kubectl rollout restart deployment/waterproof-frontend -n waterproof# 查看资源使用情况
kubectl top pods -n waterproof
kubectl top nodes # 查看所有资源(命名空间内)
kubectl get all -n waterproof # 实时监控Pod状态
kubectl get pods -n waterproof -w # 查看集群节点
kubectl get nodes -o wide # 查看API地址(确认连的是哪个集群)
kubectl cluster-info# ❌ 命令式(你要告诉它怎么做)
ssh server
docker pull image
docker stop old
docker run new # ✅ 声明式(你只告诉它要什么)
kubectl apply -f deployment.yaml
# K8s自己决定怎么达到这个状态你写:我要3个Pod ↓
K8s检查:现在只有1个 ↓
K8s执行:创建2个新Pod ↓
K8s检查:现在有3个 ✅ ↓
(循环)永远确保是3个# Pod上有标签
labels: app: waterproof-frontend env: production # Service通过标签找Pod
selector: app: waterproof-frontend # 只找有这个标签的Pod对象 缩写 作用 你的项目里
Pod po 跑容器的最小单元 前端Pod、后端Pod
Deployment deploy 管理Pod版本、数量 waterproof-frontend
Service svc 稳定的网络入口 waterproof-frontend-lb
ConfigMap cm 配置文件 nginx-frontend-config
Secret secret 密钥 acr-secret
Ingress ing 公网访问入口 -
PersistentVolumeClaim pvc 持久化存储 postgres-pvc
Namespace ns 隔离环境 waterproof
HorizontalPodAutoscaler hpa 自动扩缩容 还没配
Job job 一次性任务 数据库迁移第一阶段:能跑起来(你现在)
├── kubectl get pods
├── kubectl logs
├── kubectl exec
├── kubectl set image
└── kubectl rollout status
第二阶段:能配起来(下一步)
├── 自己写 Deployment YAML
├── 自己写 Service YAML
├── 配 ConfigMap/Secret
└── 配 Ingress
第三阶段:能调优(进阶)
├── HPA 自动扩缩容
├── PodDisruptionBudget
├── 网络策略
└── 监控告警
第四阶段:能排障(高手)
├── 分析 Pod 启动失败
├── 网络问题排查
├── 性能问题定位
└── 集群级问题诊断