一个应用在自己电脑上跑通以后,后面还有不少事:换台机器为什么失败,实例退出后谁来补,升级时怎样少影响用户,数据放在哪里,慢请求又该从哪查。
这个合集就沿着这些问题往下走。我们用一个读书笔记服务做例子,先看进程和容器,再加入多副本、数据库、图片存储及异步任务。每增加一个组件,都说清它解决什么问题、通过什么机制工作,以及哪些事情仍然要由应用自己处理。
适合已经写过简单HTTP服务、接触过Linux命令,但还没有把云原生知识连起来的读者。刚开始不用准备生产集群,第1篇会介绍可重建的实验环境。看不懂某段配置时,先跟着请求和状态变化走,字段名称可以回头再查。
先看应用怎样运行
- 从一次上线事故理解云原生 从环境差异和进程故障出发,分清容器、平台与应用的责任,并准备安全的实验环境
- 容器如何隔离进程 看Namespace、cgroup与文件系统怎样配合,解释localhost、挂载和重启时的变化
- 从代码到可重复镜像 把Go应用的构建与运行拆开,理解镜像层、缓存、digest与构建凭据
再把多个实例组织起来
- Kubernetes 如何让应用持续运行 沿着一次提交看控制器、调度器和kubelet,理解Pod替换与工作负载选择
- 从域名到 Pod 的一次请求 串起DNS、Service、EndpointSlice与入口,逐跳判断流量为什么没有到达应用
- 配置与数据为什么需要独立生命周期 区分配置传播、程序重载、持久化和备份,理解PVC与StatefulSet的边界
让变化能够安全发生
- 多套环境怎样共用一份配置 用Helm与Kustomize管理共性和差异,审查真正要提交的资源,而不只看模板
- 健康检查与弹性为什么会适得其反 通过慢启动和下游过载理解探针、requests、limits、HPA及容量约束
- 一次发布怎样才算完成 从制品身份走到滚动更新、退出、业务验证与数据库兼容,设计可执行的回退路径
最后回到真实问题
- 用证据排查一次慢请求 结合指标、日志与追踪缩小假设,读懂分位数、采样和SLO
- 从最小权限建立安全边界 沿镜像、进程、身份、网络和凭据逐层判断一次失守会影响什么
- 微服务 网格与Serverless该在什么时候出现 从异步摘要任务看服务拆分、重试与幂等,再评估新平台是否值得
- 把一条故障链查到底 用四个教学现场,把前面的机制连成症状、假设、证据和验证的完整过程
怎么读更有效
第一次可以顺序读,每章末尾先看题目,卡住再看提示,最后对照答案。题目的重点是解释原因,不是背命令参数。
如果正在排查问题,可以按入口跳读:请求到不了应用看第5篇;配置明明改了却没生效看第6篇;扩容后仍然慢看第8和第10篇;回滚失败看第9篇。返回前面的机制,再看第13篇的完整推理,会比反复重启更有收获。
命令与配置用于解释机制,实际操作前要核对所用版本、运行环境和资源范围。实验只放测试数据,不把工作集群当练习场。正文中的故障例子是教学推演,不代表用户网站的真实架构或事故。
