1. 课程导入与生产环境认知

很多工程师第一次把 Kubernetes 用进生产,都会经历一个相似的落差:在测试集群里,一条 kubectl apply 就能把应用跑起来,滚动更新、扩缩容、服务发现都显得顺理成章;可一旦承载真实业务流量,问题就变成了另一副面孔——节点突然 NotReady、Pod 被驱逐、镜像拉取超时、Ingress 502、etcd 延迟升高、控制面 API 响应变慢。这些现象背后,往往不是"Kubernetes 不会用",而是"没有按生产标准去设计和治理"。

本课程面向公有云上的 Kubernetes 生产实践,核心目标不是再讲一遍 Pod、Deployment、Service 的用法,而是回答一个更实际的问题:当集群承载真实业务、面对真实故障和真实成本压力时,我们如何让它稳定、可观测、可恢复、可演进。

公有云 Kubernetes 的四个核心挑战

与自建机房相比,公有云 Kubernetes 把底层 IaaS 的弹性、网络、存储、负载均衡都抽象成了 API,这带来了便利,也带来了新的复杂度。生产实践中,挑战主要集中在四个方面。

第一,控制面的稳定性边界。托管集群虽然由云厂商保障 etcd 和控制面组件的高可用,但 API Server 的请求压力、准入 Webhook 的阻塞、CRD 数量膨胀、大规模 List-Watch 风暴,仍然会由使用者的行为触发。一个写得不好的 MutatingWebhook,可能让整个集群的 Pod 创建全部超时。

第二,节点与工作负载的可靠性。节点是会被回收的——竞价实例、缩容、宿主机维护、磁盘打满、内核 OOM,都会让节点在毫无预告的情况下消失。工作负载必须假设"节点随时会走",通过副本数、反亲和、PodDisruptionBudget、优雅终止来保证业务不中断。

第三,网络与流量的可观测性。公有云 VPC 网络、容器网络插件、Service、Ingress、负载均衡器层层叠加,一次请求可能穿过 5~6 个转发点。当出现偶发超时或 5xx 时,如果没有清晰的链路视图和指标,排查会变成"猜谜"。

第四,成本与资源的匹配。云上资源是按量计费的,Requests 设置过大导致节点利用率长期低于 30%,或者 HPA 配置不当导致频繁扩缩容,都会直接反映在账单上。可靠性治理必须同时考虑成本约束。

可靠性治理的目标与衡量方式

可靠性不是"永不出故障",而是"故障发生时,影响可控、恢复可预期"。在生产实践中,我们通常用几个可量化的目标来约束治理工作:

  • 可用性目标(SLO):例如核心服务月度可用性 99.95%,对应每月约 21 分钟不可用预算。
  • 恢复时间目标(RTO):单节点故障后,业务恢复时间不超过 60 秒。
  • 数据恢复点目标(RPO):有状态服务的数据丢失窗口不超过 5 分钟。
  • 变更失败率:发布导致的故障占比控制在 15% 以内,并可通过灰度与回滚快速收敛。

这些目标不是写在文档里的口号,而是要落到具体的配置和流程上:副本数、探针、PDB、资源配额、监控告警、发布策略、演练机制。本课程后续章节会逐一展开。

课程整体学习路径

整个课程按"认知—建设—治理—演练"的主线组织,共 30 章,大致分为五个阶段:

  1. 生产环境认知与准备(第 1~4 章):理解生产与测试的差异,搭建贴近生产的实验环境,明确集群架构与命名规范。
  2. 工作负载与调度可靠性(第 5~10 章):副本、探针、资源、亲和、PDB、优雅终止、优先级与抢占。
  3. 网络、存储与流量治理(第 11~17 章):CNI、Service、Ingress、网关、DNS、持久化存储与有状态服务。
  4. 可观测性与故障排查(第 18~24 章):指标、日志、链路、事件、告警、典型故障树与排障方法。
  5. 变更、演练与成本治理(第 25~30 章):发布策略、混沌演练、容量规划、成本优化与治理体系落地。

下面这张图展示了本课程从"环境准备"到"治理闭环"的整体路径,以及每个阶段的核心产出物,便于你在学习过程中随时定位自己所处的位置。

公有云 Kubernetes 生产可靠性治理路径 从环境认知到治理闭环,五个阶段逐层递进 1 环境认知与准备 生产 vs 测试差异 集群架构与命名规范 实验环境搭建 2 工作负载与调度 副本 / 探针 / 资源 亲和 / PDB / 抢占 优雅终止 3 网络存储与流量 CNI / Service / Ingress DNS / 网关 持久化与有状态服务 4 可观测与排障 指标 / 日志 / 链路 事件与告警 故障树与排障方法 5 变更与治理 发布策略 混沌演练 容量与成本 各阶段核心产出 环境清单 / 命名规范 可复现实验集群 工作负载基线配置 调度与中断策略 网络与存储方案 流量入口与 DNS 规范 监控告警体系 故障排查手册 发布与演练机制 成本优化报告 治理闭环:演练与复盘结果反哺环境规范、配置基线与告警阈值 本课程主线:认知 → 建设 → 治理 → 演练 → 反哺,形成可持续的生产可靠性体系

实战环境准备

为了让后续章节的配置、命令和排障过程可以直接复现,建议准备一套贴近生产的实验环境。这里给出一个可参考的最小配置,属于教学示例,具体规格可根据自己的云账号和预算调整。

项目建议配置说明
托管集群1 个控制面 + 3 个工作节点节点规格 4 vCPU / 8 GiB,便于观察调度与驱逐
节点池1 个按量节点池 + 1 个竞价节点池用于验证节点回收与工作负载迁移
网络插件云厂商 CNI 或 Calico需支持 NetworkPolicy
存储1 个云盘 StorageClass + 1 个 NAS StorageClass分别验证块存储与共享存储
可观测Prometheus + Grafana + Loki指标、日志、告警基础链路
工具kubectl、helm、k9s、stern日常操作与排障

环境就绪后,建议先做一次基线检查,确认集群处于可观测、可操作的状态:

# 查看节点状态与版本
kubectl get nodes -o wide

# 查看系统组件健康
kubectl get pods -n kube-system

# 查看集群事件,确认无异常驱逐或调度失败
kubectl get events -A --sort-by=.lastTimestamp | tail -n 20

# 查看资源分配情况,确认 Requests 与 Allocatable 的比例
kubectl describe node <node-name> | grep -A 8 "Allocated resources"

如果 Allocated resources 中 CPU Requests 已经超过 70%,说明节点余量偏紧,后续做滚动更新或故障迁移时容易触发调度失败,需要提前扩容或调整 Requests。这类"先看基线、再谈治理"的习惯,会贯穿整个课程。

本课程所有示例参数、命令输出和故障现象均为教学示例或合理假设,用于说明方法与判断依据,不代表任何特定云厂商或生产集群的实测结果。实际执行时请结合自己的集群版本、CNI、存储插件和业务特征进行调整。