云原生基础设施 + SRE 落地项目:从平台建设到稳定性工程闭环
在很多团队里,“上 Kubernetes”“接 Prometheus”“做自动化发布”往往是分散推进的:基础设施团队负责集群,研发团队负责应用,运维团队负责告警,出了故障再临时拉群协同。这样做的问题不是技术组件不够先进,而是缺少一套围绕“交付效率 + 系统可靠性 + 运行成本”统一设计的工程体系。
本文基于一个真实可复用的云原生平台建设思路,系统讲清楚如何从 0 到 1 搭建生产级 Kubernetes 平台,并把 GitOps、可观测性、容量治理、故障演练和 SRE 方法论串成一个可以落地、可以扩展、可以支撑高并发业务的完整项目。
文章重点不只停留在“用了什么技术”,而是回答四个更重要的问题:
- 为什么要这样设计,而不是简单堆组件
- 这些组件在高并发和生产环境下如何协同
- 稳定性目标如何被量化、治理和验证
- 一套平台如何支撑多环境、多团队和持续演进
一、项目背景与建设目标
1.1 背景
项目服务于公司内部多个业务系统,包括用户中心、订单服务、支付服务、营销服务和内部管理后台。随着业务增长,传统部署方式逐渐暴露出几个典型问题:
- 发布依赖人工操作,环境不一致,变更风险高
- 应用运行状态不可见,故障定位依赖 SSH 登录和日志 grep
- 资源规划粗放,峰值期间容易出现节点资源争抢
- 告警很多,但真正能体现用户影响的告警很少
- 故障恢复依赖专家经验,缺少标准化流程和自动化能力
1.2 建设目标
平台建设最终不是为了“搭一套技术栈”,而是为了形成以下结果:
- 统一交付:基于 GitOps 打通代码提交、镜像构建、配置发布和自动回滚
- 统一运行:应用运行在标准化 Kubernetes 平台上,具备资源约束、自愈、伸缩和隔离能力
- 统一观测:指标、日志、事件三位一体,面向系统运行质量和业务可用性建模
- 统一治理:以 SLI/SLO 为核心,建立告警、值班、复盘、演练和容量规划闭环
- 统一扩展:支持多环境、多命名空间、多业务线接入,满足未来多集群与多区域演进
二、总体架构设计
2.1 架构全景
┌────────────────────────────┐ │ 开发者 / 平台工程师 │ └──────────────┬─────────────┘ │ Git Push / Merge Request │ ┌────────────────────────▼────────────────────────┐ │ GitLab CI │ │ 单元测试 / 代码扫描 / 镜像构建 / 镜像签名 / 推送 │ └────────────────────────┬────────────────────────┘ │ 更新 GitOps 仓库 │ ┌────────────────▼────────────────┐ │ Argo CD │ │ 期望状态管理 / 自动同步 / 回滚 │ └────────────────┬────────────────┘ │ ┌─────────────────────────────────▼─────────────────────────────────┐ │ Kubernetes Production │ │ Ingress / Service / Deployment / HPA / PDB / NetworkPolicy │ │ RuntimeClass / PriorityClass / LimitRange / ResourceQuota │ └──────────────┬────────────────────────┬───────────────────────────┘ │ │ ┌─────────────▼────────────┐ ┌────────▼───────────┐ │ Observability Plane │ │ Security Plane │ │ Prometheus / Alertmanager│ │ RBAC / OIDC │ │ Grafana / Loki / Tempo │ │ Secret 管理 │ └─────────────┬────────────┘ └────────┬───────────┘ │ │ ┌─────────────▼────────────────────────▼─────────────┐ │ SRE Control Loop │ │ SLI/SLO -> Alert -> Oncall -> Mitigation -> RCA │ │ Capacity -> Chaos -> Review -> Optimization │ └────────────────────────────────────────────────────┘2.2 架构设计原则
这套架构遵循五个核心原则:
声明式优先
集群资源、应用配置、告警规则、Dashboard 等都采用 Git 声明式管理,减少“手工改线上”的不可审计行为。控制面与数据面解耦
GitLab 负责构建,Argo CD 负责交付,Kubernetes 负责调度运行,Prometheus/Loki 负责观测,避免单系统承担过多职责。平台标准化优先于个体优化
对应用接入规定统一模板,包括健康检查、资源限制、监控暴露、日志规范、告警定义,提升整体治理效率。以用户感知为核心定义可靠性
不是 CPU 高就告警,而是围绕成功率、延迟、饱和度和错误预算构建监控体系。为高并发和多团队协作预留扩展位
组件选型和分层设计必须考虑未来接入更多业务、跨环境发布、多区域部署和容量弹性。
三、核心组件选型与原理分析
3.1 为什么选择 Kubernetes 作为基础设施底座
Kubernetes 的价值不只是容器编排,更重要的是它提供了一套统一的资源抽象与控制回路:
Deployment维护副本期望状态Service提供稳定服务发现Ingress或网关负责南北向流量接入HPA根据指标自动扩缩容PDB限制中断预算,保证滚动变更安全Node Affinity、Taint/Toleration实现资源调度隔离
它本质上是一个不断把“当前状态”收敛到“期望状态”的分布式控制系统。SRE 落地的很多能力,例如自愈、弹性、标准化交付、发布回滚,都是建立在这套控制回路之上的。
3.2 为什么选择 Calico 而不是简单 Overlay 网络
在生产环境下,网络方案需要的不只是“能通”,更重要的是性能、策略和可观测性。
Calico 的优势主要体现在:
- 支持三层路由和 BGP,减少额外 Overlay 开销
- 支持细粒度
NetworkPolicy,适合多业务线隔离 - 与 Kubernetes 生态集成成熟,运维成本可控
- 在多节点、大规模 Pod 网络场景下稳定性较好
对于存在多租