SRE 云原生运维 可靠性工程 Linux Kubernetes
聚焦站点可靠性工程(SRE)与云原生运维实践,记录 Linux 系统运维、监控告警、容器编排、CI/CD 与自动化运维的深度技术指南。

切流量切到一半数据库连接池炸了:蓝绿与金丝雀发布的 6 个生产级决策与流量治理实录

概述 凌晨 2 点,某出行平台的支付服务做蓝绿切换。运维执行 kubectl rollout 切换 Service selector,流量从蓝色环境切到绿色环境。看起来一切正常——Pod 就绪、健康检查通过、响应延迟正常。 3 分钟后,DBA 群炸了。数据库连接数从 200 飙到 1200,连接池被打满,下游 5 个服务全部超时。原因是绿色环境的应用版本更新了 ORM 框架,连接池默认配置从 20 改成了 100,而蓝绿两套环境同时存在时,总连接数直接翻了一倍。 蓝绿部署和金丝雀发布,概念上很简单——准备两套环境切流量,或者先放一小部分流量验证。但生产环境落地的坑远比"切个流量"复杂得多。数据库 schema 怎么兼容?两套环境并存时资源怎么算?流量切换的粒度怎么控制?回滚怎么自动化? 这篇文章拆解蓝绿与金丝雀发布在生产环境落地的 6 个关键决策,每个决策都来自实际项目中的踩坑或权衡。涉及 K8s 原生 Deployment 的局限性、Argo Rollouts 的渐进式交付架构、Istio 流量治理、数据库迁移兼容策略、自动回滚门禁设计等内容。配置示例全部可复制运行。 决策一:为什么 K8s 原生 Deployment 不够用 滚动更新的三个硬伤 Kubernetes 原生 Deployment 用 RollingUpdate 策略做发布,原理是逐步用新 Pod 替换旧 Pod。对很多场景够用,但生产环境有几个硬伤: 1. 无法控制流量比例。 RollingUpdate 按 Pod 数量做替换,不是按流量比例。假设 10 个副本,maxSurge=1,maxUnavailable=0,那发布过程中新旧 Pod 比例是 1:9、2:8…10:0。但你没法说"只给新版本 5% 的流量"——所有请求随机打到新 Pod,5% 流量意味着 1 个新 Pod 承接 10 个副本中随机的请求。这对支付类业务是致命的:你不知道哪个用户的请求会打到新版本。...

October 17, 2026 · 11 分钟 · 2250 字 · 徐保金

一个命名空间吃掉集群 80% 内存:K8s ResourceQuota 多租户资源治理的 4 个生产级决策

概述 某次大促前夜,测试环境的 Pod 集体卡在 Pending。kubectl top nodes 显示节点 CPU 使用率才 35%,内存也只用了不到一半。翻 Deployment YAML,requests 和 limits 设置都合理。问题出在哪?——不是资源不够,是"账本"被算爆了。某个命名空间的 ResourceQuota 已经触顶,后续所有 Pod 创建请求被 admission controller 直接拒绝。 这件事让我重新审视了 K8s 命名空间级资源治理的完整链路。很多人以为设了 LimitRange 就万事大吉,或者觉得 ResourceQuota 只是"给开发组限个额度"的简单操作。实际上,ResourceQuota、LimitRange 和 QoS 三者之间的协同关系,直接决定了多租户集群的资源公平性和稳定性。 本文围绕 4 个生产级决策展开:LimitRange 与 ResourceQuota 必须成对出现、配额维度要覆盖算力+对象+存储三层、用 ScopeSelector 做精细化分流、配额耗尽的告警与自动治理。每个决策都附带了完整可复制的 YAML 模板和真实踩坑数据。如果你正在管理一个多团队共享的 K8s 集群,这些配置能帮你避开大部分资源争抢的坑。 ResourceQuota 和 LimitRange 到底在管什么 先说人话。K8s 的资源管理分两个层次: Pod 级:requests 和 limits,管的是单个容器能用多少资源。调度器根据 requests 决定 Pod 放到哪个节点,运行时根据 limits 做限流和 OOM Kill。这部分在 相关文章:Kubernetes 资源管理:Requests 与 Limits 里有详细讲解。 命名空间级:ResourceQuota 和 LimitRange,管的是整个命名空间能吃多少集群资源。 打个比方。LimitRange 是"采购审批员"——每个容器提交资源申请时,它检查你的 requests/limits 是否在合理范围内,不合理直接驳回。ResourceQuota 是"财务审计员"——它盯着整个命名空间的资源消耗总量,一旦超标,新的 Pod 直接不让创建。...

October 15, 2026 · 8 分钟 · 1606 字 · 徐保金

告警 5000 条没人看:可观测性体系从碎片化到统一的 6 个架构决策

概述 去年有个朋友跟我吐槽:他们公司上了 Prometheus、ELK、Jaeger 三套工具,运维团队 7 个人,每天光处理告警就耗掉 4 小时。某天凌晨支付服务 P0 故障,从告警触发到定位根因花了 42 分钟——根因是一个数据库连接池配置变更导致慢查询堆积,Jaeger 里有完整的 Trace,但没人看;ELK 里有慢查询日志,但没人搜;Prometheus 里有连接池指标的异常波动,但告警被淹没在 5000 条日常告警里。 问题出在哪?工具都上了,数据都采了,但三套系统各自为战,没有形成"可观测性"。这就像你给一辆车装了速度表、油表、温度计,但三个表盘分别放在后备箱、手套箱和引擎盖下面——仪表都在,但你开不了车。 可观测性(Observability)这个词来自控制理论,核心定义很简单:通过系统的外部输出推断系统内部状态的能力。说白了就是——不用进到系统里面去翻代码,光看数据就能回答"系统现在健不健康?出了问题在哪?为什么出问题?" 这篇文章不讲三支柱是什么(Metrics/Logs/Traces 满大街都有文章讲),讲的是从碎片化监控到统一可观测性体系,你需要做哪些架构决策,以及每个决策的踩坑实录。每一条都是我在生产环境中验证过的,不是 PPT 上的理论。 监控≠可观测性:先搞清楚你在解决什么问题 很多人把监控和可观测性混为一谈。这俩不是一回事。 监控(Monitoring) 回答的是"出了什么问题"——CPU 炸了、内存满了、接口超时了。它是预设的、基于已知故障模式的。你提前定义好"CPU > 80% 就告警",系统照着执行。 可观测性(Observability) 回答的是"为什么出问题"——为什么这个接口突然变慢了?为什么这个 Pod 一直在重启?为什么这个用户的请求失败了?它是探索性的、面向未知故障模式的。你没法提前定义所有可能的故障,但通过 Metrics + Logs + Traces 的关联,你能在出事后快速定位。 举个例子:用户反馈下单失败。 只有监控:你看到订单服务的错误率从 0.1% 跳到 5%。你盯着 Grafana 看了 10 分钟,猜可能是数据库问题,跑去查 DB 日志。发现有个慢查询。但为什么有慢查询?不知道。继续猜。 有可观测性:你看到错误率跳到 5%,点开 Trace 链路,看到请求在库存服务的 DB 查询 Span 耗时 8 秒。点开这个 Span 关联的日志,看到是连接池等待超时。再看 Metrics,发现连接池活跃连接数在 15 分钟前从 5 飙到 50(配置变更后上限改大了,但数据库端 max_connections 没改)。3 分钟定位完毕。 维度 监控 可观测性 核心问题 出了什么问题? 为什么出问题? 数据预设 预定义指标和阈值 探索性分析,支持临时查询 故障模式 已知故障模式 未知故障模式也能排查 数据关联 各系统独立查看 Metrics↔Logs↔Traces 互相关联 典型工具 Zabbix、Nagios Prometheus+Loki+Tempo+Grafana 适用阶段 基础运维阶段 微服务/云原生阶段 别被概念绕晕了。记住一点:监控告诉你"病了",可观测性告诉你"病在哪、为什么病"。如果你的系统是单体应用、部署在 3 台服务器上,监控够了。但如果你的系统是 50 个微服务跑在 K8s 上,没有可观测性,出了故障你就是盲人摸象。...

October 13, 2026 · 10 分钟 · 1934 字 · 徐保金

运维琐事从 60% 压到 20%:SRE 团队成熟度 5 级模型与量化自检的 6 个工程决策

概述 2021 年我刚接手一个运维团队时,做了个简单统计:团队 12 个人,一周 40 小时工作时间里,平均 24 小时花在手动处理工单、重启服务、补磁盘空间这些事情上。琐事占比 60%。剩下 16 小时里,一半在开会同步信息,真正做工程优化的时间每周不到 8 小时。 团队里每个人都很忙,但系统还是不稳定。MTTR 40 分钟,可用性 99.5%,告警群每天 200 多条。老板问我:“我们团队到底行不行?“我答不上来。不是谦虚,是没有量化标准。 后来我花了 3 年时间,把可用性从 99.5% 推到 99.9%,MTTR 从 40 分钟压到 8 分钟,琐事占比从 60% 降到 20% 以内。回头复盘,最关键的一步不是引入了什么工具,而是建立了一套成熟度评估体系——先搞清楚团队在哪个段位,再决定下一步投什么。 这篇文章分享我实际用过的 SRE 团队成熟度 5 级模型。它借鉴了 CMMI 的分层思路,但完全针对 SRE 场景重新设计,每个级别都有可量化的判断标准。文末有一份 Python 自检脚本,你跑一下就知道自己的团队在哪一级。 为什么需要 SRE 成熟度模型 先说几个常见场景,看看你中了几条: 招人时 JD 写"精通 K8s 和 Prometheus”,面了一圈发现候选人技术栈差不多,但来了之后产出天差地别——因为你不知道团队缺的是"会写 PromQL 的人"还是"能设计 SLO 体系的人” 申报预算时跟老板说"我们需要买 Datadog 和搭建混沌工程平台",老板问"现在是什么水平?投了能到什么水平?“你答不上来 跨团队协作时,开发觉得 SRE 只会卡上线,SRE 觉得开发只管发版不管稳定性——根源是双方对"SRE 该干什么"没有共识 团队里有人想推进自动化,有人觉得"手动操作挺好的为什么要改”,你作为负责人没法用数据说服 这些问题的共同根因是:没有一把可量量的尺子来衡量团队能力。...

October 10, 2026 · 9 分钟 · 1746 字 · 徐保金

凌晨三点 Pod 集体被 OOM Kill:从 working_set 盲区到内存预警体系的 5 个生产决策

概述 凌晨三点,告警群炸了。 5 个 Pod 在 10 分钟内陆续 OOMKilled 重启。值班同学打开 Grafana 看内存曲线,事发前所有 Pod 的 working_set 离 limit 还有 200MB,使用率 80%。监控显示一切正常,Pod 照样死了。 这不是个例。在某新能源物流平台做 K8s 迁移时,这类"监控绿着 Pod 就死了"的事故我处理过不下 10 次。根因每次都一样:运维团队只盯了一个指标,而且盯的那个指标会骗人。 容器内存不是单一数值。cAdvisor 暴露了四个维度的内存指标,大部分团队只用 container_memory_working_set_bytes 做告警基线。问题在于,当 page cache 已经很小时,working_set 显示 80% 可能意味着实际只剩 5% 的可分配额度——你看到的 20% 余量根本不存在。 本文拆解容器内存监控的四层指标迷雾,给出 5 个生产级预警决策,包含完整的 PromQL recording rules、告警规则和 Grafana 查询。这套配置在某新能源物流平台 120+ 微服务集群上跑了 6 个月,OOM 预警准确率从 60% 提升到 95%,误报率从 40% 降到 5%(相关文章:告警策略设计:从噪声到信号)。 容器内存的四层指标迷雾 cAdvisor 暴露了什么 cAdvisor(Container Advisor)是 K8s 节点上 kubelet 内置的容器监控组件,通过 /metrics 端点暴露 Prometheus 格式的指标。在内存维度,它暴露了四个关键指标,每个都对应不同的 cgroup 底层字段:...

October 8, 2026 · 11 分钟 · 2256 字 · 徐保金

自建 Terraform 后端撑到 30 人团队就裂了:迁移 HCP Terraform 的 6 个工程决策与 TCO 实录

概述 周一的站会上,某出行平台的平台工程团队例行复盘上周事故:一周 17 个状态锁冲突、2 次生产环境被"好心"的同事手动 apply 改坏、1 次凭据明文躺在 CI 日志里。原因不是某个人操作失误,而是我们那套自建的 Terraform 后端——Git 仓库 + S3 状态桶 + DynamoDB 锁 + 一堆 hand-made CI 脚本——在团队从 5 人长到 30 人之后,已经彻底撑不住了。 Terraform 的配套托管平台 HCP Terraform(原 Terraform Cloud)我一直知道,但总觉得"不过是把状态文件托管到云端",直到这次事故周才真正认真评估它。评估完发现,托管平台的真正价值不在状态存储,而在执行模型、权限模型和策略引擎。这篇文章不是产品介绍,而是我实际迁移后的决策记录:6 个关键工程决策、一份不掺水的 TCO 账本、以及每个决策对应的坑。 你会看到: 自建后端在团队规模增长后到底贵在哪里(一份真实成本拆解) 触发我们迁移的 6 个临界点信号 HCP Terraform vs Terraform Enterprise vs OpenTofu 自建的选型对比表 Workspace 与变量集的组织模型,以及我们踩过的"变量集陷阱" 从 S3 后端迁到 HCP Terraform 的完整步骤与 5 个迁移坑 Sentinel 策略即代码的实战示例(阻断一个"危险变更包"的完整过程) 平台 API 自动化:把 HCP Terraform 自身也纳入 IaC 管理 与 CI/CD 集成的两种模式(VCS 驱动 vs CLI 驱动)和 Run Tasks 扩展 一份按用户数、并发、存储估算的 TCO 对照表 先声明立场:本文不吹 HCP Terraform,也不劝你迁移。如果你的团队只有 3-5 人、基础设施规模不大,自建方案可能是更优解,我会在最后一节给出明确的"不要迁移"判断标准。这篇文章面向的是——团队规模已经在膨胀、自建方案开始频繁出事故、需要在失控前做一次理性选型的人。...

October 7, 2026 · 13 分钟 · 2659 字 · 徐保金

回滚了却比不回滚还惨:CI/CD 自动回滚体系的 5 层架构与 4 个生产级踩坑

概述 凌晨 2 点 47 分,告警群炸了。一个支付服务新版本上线后 P99 延迟从 80ms 飙到 1200ms,值班同事第一时间按下回滚按钮。kubectl rollout undo 执行成功,旧版本 Pod 重新拉起,流量切回去。结果呢?服务彻底不可用了——因为新版本上线时跑了一个数据库迁移脚本,把订单表的 status 字段从 varchar(20) 改成了 tinyint,回滚后的旧代码根本不认识新的字段类型。 这不是杜撰。这是我在某出行项目亲历的一次故障。那次事故的 MTTR(平均恢复时间)是 1 小时 23 分钟,其中回滚操作本身只花了 47 秒,但回滚后服务不可用导致的排查时间占了 1 小时 22 分钟。 回滚不是银弹。设计不当的自动回滚比不回滚还危险——它会让你在已经出问题的窗口期再做一次变更,把"半挂"变成"全挂"。 这篇文章拆解 CI/CD 自动回滚体系的 5 层架构,给出 4 个生产级踩坑实录。不讲"什么是回滚"这种入门概念,直接上架构决策和工程权衡。如果你正在设计 CI/CD 回滚机制,或者被"回滚失败"坑过,这篇应该能帮到你。 为什么 90% 的回滚设计都是残缺的 先说一个反直觉的数据。微软对 Microsoft Teams 的 152 起生产事故做了系统研究(来源),发现超过 90% 的事故最终通过"不改代码"的方式缓解——回滚、配置变更、重启服务。但有意思的是,接近一半的事故在"缓解"阶段被延迟了,原因不是技术问题,而是"回滚决策不明确"和"修复部署太慢"。 换句话说,大多数团队不是没有回滚,而是回滚设计是残缺的。残缺在哪?看这张表: 回滚层次 常见做法 缺什么 后果 代码回滚 kubectl rollout undo 只回滚了镜像,没回滚配置 旧代码读新配置,启动失败 配置回滚 手动改 ConfigMap 没和代码版本绑定 配置漂移,下次部署带错误配置上线 数据回滚 不回滚 数据库迁移不可逆 旧代码连不上新 schema,全挂 流量回滚 切回旧版本 没考虑缓存和会话状态 用户请求打到旧版本但 session 数据在新版本里 回滚验证 不验证 回滚了就算完事 回滚本身引入新故障,无人发现 这五层里,漏掉任何一层,你的回滚机制就是残缺的。我见过太多团队,CI/CD 流水线里加了一个 kubectl rollout undo 就觉得自己有自动回滚了。实际上那只是"镜像回滚",不是"服务回滚"。...

October 3, 2026 · 10 分钟 · 2057 字 · 徐保金

120 个微服务零故障迁 K8s:3 个月实战迁移中没人讲的 6 个坑

概述 把 120 多个微服务从传统虚拟机部署迁移到 Kubernetes,听起来是个标准项目:写 Dockerfile、建集群、迁移服务、切流量。规划会议上人人都觉得三个月够了。实际干起来你会发现,真正的难点不在"怎么把服务跑起来"——那只是 helm install 的事——而在于那些迁移过程中没人提前告诉你的坑:服务依赖的循环引用、有状态服务的内存态丢失、CNI 插件在大规模下的性能拐点、灰度切流时的 DNS 缓存陷阱、配置管理的环境变量膨胀、监控指标在迁移后的断层。 这篇文章是我主导某新能源物流平台 120+ 微服务 K8s 全量迁移的复盘。3 个月,零故障(这里的"零故障"指迁移过程未引发 P0/P1 级业务中断,不是零报错),扩缩容从 25 分钟降到 1 分钟,发布效率提升 50%。但过程远没有结果看起来那么顺利——光服务依赖梳理就花了三周,CNI 性能问题排查折腾了一周,灰度切流时 DNS 缓存导致的间歇性 502 让团队熬了两个通宵。 我写这篇文章的目的不是教你 K8s 基础概念,而是把迁移过程中真正卡住我们的 6 个坑拆开讲清楚,每个坑都附上架构决策过程和替代方案对比。如果你正在做或准备做大规模微服务 K8s 迁移,这些经验能帮你少走弯路。 坑一:服务依赖梳理——你以为的线性依赖其实是张循环图 问题:依赖检测做了一半就发现了死循环 迁移第一步是梳理服务依赖关系,确定迁移顺序。我们的标准做法很简单:找出没有下游依赖的服务先迁,然后逐层往上推。用 grep 扫了一遍配置文件里的数据库连接和 API 调用地址,画出了依赖拓扑图。 第一周很顺利。第二周开始出问题了——配置文件里写的依赖只是冰山一角。运行时的动态依赖、通过服务发现(Eureka/Nacos)路由的调用、消息队列触发的异步链路,这些都不在静态配置里。等我们把所有依赖补完,发现依赖图里有三个循环引用:A 调 B,B 调 C,C 又调 A。 这不算什么新鲜事。微服务架构演进两三年后,循环依赖几乎是必然产物。但迁移时它是个致命问题:你不能分批迁移了。A、B、C 必须同时迁,否则跨平台调用(K8s 内服务调 K8s 外服务)的网络延迟和 DNS 解析会成为性能瓶颈。 解法:运行时调用链分析 + 分批策略调整 光看配置文件不够。我们最终用了两套工具配合: 第一套:Jaeger 分布式链路追踪 在迁移前一个月,给所有服务接入了 OpenTelemetry SDK,通过 Jaeger 采集全量调用链路。跑了一周,拿到了真实运行时的服务调用关系图。静态配置里没出现的依赖关系,在链路数据里暴露无遗——光是消息队列触发的异步调用链就有 14 条,其中 3 条是循环依赖。...

October 1, 2026 · 12 分钟 · 2349 字 · 徐保金

别用手动装服务器了:Packer 黄金镜像流水线从构建到安全扫描的完整实战

概述 凌晨两点,告警炸了。排查发现某台服务器装了旧版本 OpenSSL,存在已知漏洞。安全团队问:还有多少台机器是同样的状态?你说不上来。 这就是手动装服务器的代价。每台机器各自 apt install,装出来的环境千差万别。有人忘了打补丁,有人装了多余包,有人改了内核参数却没记下来。等出事了才发现——你根本不知道线上到底跑了多少种"配置漂移"的机器。 Packer 解决的就是这个问题。它把"装一台服务器"这件事变成代码:你写一个模板,Packer 启动一台临时机器,按模板配置好,打成镜像(AMI、VMDK、Docker 镜像、qcow2 等),然后销毁临时机器。下次要新服务器?直接用镜像启动,秒级就绪,配置完全一致。 这篇文章不教你跑个 Hello World。我聊的是生产级的黄金镜像流水线:从 HCL2 模板设计、Ansible Provisioner 集成、CI/CD 自动触发,到 Trivy 安全扫描、镜像版本管理和灰度发布。每一步都带踩坑实录。 什么叫"黄金镜像" 先说清楚概念。“黄金镜像”(Golden Image)就是经过标准化配置、安全加固、测试通过的机器模板。你拿它启动的每一台服务器,初始状态都一模一样。 打个比方:以前装服务器像手工捏饺子,每个形状都不太一样。用了黄金镜像,就像用了模具——出来的每个饺子大小形状完全相同,质量可控。 对比维度 手动配置 黄金镜像 初始化时间 15-45 分钟 30-90 秒 配置一致性 依赖人工,经常漂移 镜像锁定,完全一致 安全基线 每台可能不同 构建时统一加固 可审计性 难以追溯 镜像版本可追溯 回滚能力 基本没有 切换镜像版本即可 扩容速度 慢,SSH 逐台配置 快,直接启动新实例 Netflix 2013 年就开始用这个模式了。他们叫 “Bake and Deploy”——先把代码"烤"进 AMI,然后用 Spinnaker 部署。一台机器出问题?直接销毁,用同一镜像启动新的。这比 SSH 上去排查靠谱多了。 Packer 核心概念 Packer 是 HashiCorp 出的开源工具,干的事情很简单:根据模板定义,启动临时机器,跑配置脚本,然后打镜像。机器用完即销毁。 三大核心组件 Packer 的模板(HCL2 语法)由三个核心部分组成:...

September 29, 2026 · 16 分钟 · 3236 字 · 徐保金

新服务上线 2 小时就 OOM:生产就绪审查 7 维门禁替代人工审批的工程决策

概述 凌晨一点四十七分,手机震了。告警群炸了。 某出行项目新上线的推荐服务,上线不到 2 小时,3 个 Pod 全部 OOMKilled。内存从 800MB 飙到 2GB 限制值,然后被内核杀掉,Kubernetes 拉起新 Pod,又被杀掉。循环往复,用户请求全部打到降级链路上,P99 延迟从 80ms 飙到 2000ms。 事后复盘,问题出在哪?开发团队写了完整的单元测试,通过了代码审查,跑了压测——但没有人问过一个最基本的问题:这个服务在生产环境到底"准备好了"没有? “准备好了"这三个字,在 SRE 圈子里有个正式名字:生产就绪审查(Production Readiness Review,PRR)。Google 在 SRE Book 第 32 章把它定义为 SRE 接手服务运维的第一步——只有通过 PRR 评审,SRE 团队才会同意承担该服务的运维责任。 但问题来了。传统 PRR 是一份文档,由 SRE 工程师逐条检查,填表签字。这种做法在服务数量少的时候还行,当一个企业有 50+ 微服务同时迭代时,人工 PRR 就成了发布瓶颈。开发团队抱怨"审批太慢”,SRE 团队抱怨"服务太多审不过来",最后 PRR 变成走形式——签字盖章,该炸还是炸。 这篇文章讲的是:怎么把 PRR 从人工文档变成自动化门禁,用 7 个维度的可机器检查项替代人工判断,让"准备好"这件事变成 CI/CD 流水线上的一道闸门,而不是会议室里的一场审批会。 生产就绪审查到底是什么 先说人话。 生产就绪审查就是:一个服务在正式承接真实用户流量之前,必须通过的一组检查。检查的核心问题是——“如果这个服务在生产环境出事了,我们能不能发现、能不能定位、能不能恢复”。 这不是代码审查。代码审查关心的是"代码写得对不对",PRR 关心的是"这个服务放到生产环境能不能活下来、出了事能不能救回来"。一个代码写得很漂亮但没有任何监控告警的服务,代码审查能通过,PRR 不能通过。 Google 的 PRR 模型覆盖几个核心维度:架构韧性、容量规划、监控告警、故障恢复、部署流程、安全合规。我在实际落地时把它扩展到 7 个维度,因为多出来的两个——运维归属和成本可见性——是我踩了坑之后发现不能省的。 维度 核心问题 传统人工检查 自动化门禁 架构韧性 挂一个副本会不会全挂 看部署 YAML 确认副本数 检查 PDB + 拓扑分布约束 资源配额 会不会 OOM 或 CPU 限流 看资源配置 检查 requests/limits + 历史利用率 部署安全 发坏了能不能回滚 问开发"能不能回滚" 检查滚动策略 + 回滚超时 可观测性 出了事能不能发现和定位 看有没有 Prometheus 指标 检查四金信号指标 + 告警规则 故障恢复 数据丢了能不能恢复 看有没有备份 检查备份频率 + 恢复测试记录 安全合规 权限管没管住 看 RBAC 配置 检查 NetworkPolicy + 镜像扫描 运维归属 出了事找谁 看 Wiki 文档 检查服务目录 + Runbook 链接 为什么人工 PRR 会失效 我在某出行项目推进 PRR 的时候,最初用的就是人工审查。SRE 团队写了一份 40 页的检查清单,每次新服务上线前,开发团队填表,SRE 逐条审核。结果三个星期后发现:...

September 27, 2026 · 9 分钟 · 1841 字 · 徐保金