混合云Kubernetes集群全域组网、统一管控与容灾切换SRE技术规范
文档信息
| 项目 | 内容 |
|---|---|
| 文档名称 | 混合云K8S全域组网、统一管控与故障自动切换SRE规范 |
| 适用架构 | 私有云(VMware/OpenStack)+ 公有云(阿里云ACK/腾讯云TKE/华为云CCE)多套K8S混合集群环境 |
| 适用角色 | SRE运维工程师、云平台架构师、容器运维人员、应急值守人员 |
| 文档目标 | 把多云节点网络互通、多集群统一管控、全链路可观测、故障自动容灾切换、容灾演练、SRE故障处理SOP做标准化落地 |
| 可用性目标 | 核心业务保障99.99%可用,非核心业务保障99.95%可用 |
| 版本 | V1.0 |
| 更新日期 | 2025‑02‑14 |
1. 架构概述
1.1 架构现状
5套独立的Kubernetes生产集群,属于典型的异构混合多云架构:
- 本地私有云集群:基于VMware vSphere自建K8S、OpenStack自建K8S
- 公有云托管集群:阿里云ACK、腾讯云TKE、华为云CCE
这种异构混合架构虽然能兼顾成本与多厂商风险,但也带来不少实打实的棘手问题:
- 网络形成孤岛:私有云、各家公有云之间三层网络互相不通,做不了跨集群调度,容灾能力直接受限;
- 运维管控割裂:每个集群各自独立维护,没有一套统一的能力做发布、调度、熔断、降级;
- 缺少完整容灾能力:没有一套成熟标准,来判断什么时候该故障切换、怎么自动切流量、故障修好之后怎么把业务迁回来;
- 观测能力分散:监控、日志、告警、调用链路追踪各搞一套,出问题排查定位要花很久;
- 数据无法打通:存储、中间件缺少跨云同步机制,带状态的业务很难实现跨集群漂移。
1.2 SRE核心建设目标
- 打通全域网络:让所有集群的Node、Pod、Service之间能够三层互通,规避网段冲突,拆掉跨集群通信壁垒;
- 实现集群统一管控:用一套控制面管理全部多云K8S集群,统一做应用发布、资源调度、资源治理;
- 实现全自动容灾能力:本地私有云出问题业务自动切上公有云,某一家公有云整体失活,业务自动切换到其他云上;
- 搭建全域可观测体系:监控、告警、日志、链路追踪全部收拢统一,方便SRE人员快速定位故障;
- 切换与回迁全程可控:故障发生自动切换,故障恢复后可以灰度回迁业务,核心流程尽量少依赖人工干预;
- 输出整套标准化SOP:把故障等级划分、应急处置流程、常态化演练机制、变更风险管控全部梳理成标准。
1.3 整体分层架构
站在SRE运维和业务稳定性角度,整套架构从上到下一共分为6层:
- 流量接入层:GSLB全局负载均衡、统一API网关、联邦Ingress;
- 调度管控层:Karmada多集群联邦控制面(apiserver、controller‑manager)、全局调度组件、发布治理模块;
- 业务应用层:容器化微服务、统一配置中心、统一镜像仓库、全局中间件;
- 数据持久层:跨云分布式存储、对象存储、多副本部署的中间件;
- 网络互通层:专线/SD‑WAN、全局路由、统一CNI、联邦DNS;
- 底层资源层:VMware、OpenStack、阿里云、腾讯云、华为云各类基础设施。
2. 全网网络规划与全域打通规范
2.1 全局IP网段标准化
为了从根源避免跨云路由冲突,我们提前把全网网段做静态规划,后续不允许私自新增网段,避免出现地址重叠。
各集群节点网段规划如下:
- 私有云 VMware K8S:节点网段 10.0.0.0/16
- 私有云 OpenStack K8S:节点网段 10.1.0.0/16
- 阿里云 ACK 集群:VPC / 节点 10.10.0.0/16
- 腾讯云 TKE 集群:VPC / 节点 10.20.0.0/16
- 华为云 CCE 集群:VPC / 节点 10.30.0.0/16
- 运维管理网段:172.16.0.0/24
配套要求:所有集群的Pod网段、Service网段也要独立划分,保证全网唯一,全部登记进网段台账统一管理。
2.2 全域网络互通架构
2.2.1 主链路:物理专线互通
- 本地机房分别和阿里云、腾讯云、华为云打通专线,对接厂商高速通道;
- 云端侧借助阿里云CEN、腾讯云云联网、华为云云连接,把所有云端VPC路由做汇总收敛;
- 本地核心设备上配置OSPF动态路由,全网路由自动学习、自动收敛;
- 最终效果:各个集群的Node、Pod、Service之间可以直接三层互通,支持跨集群业务互相调用。
2.2.2 备链路:SD‑WAN IPsec加密隧道(专线故障兜底)
- 在本地私有云部署SD‑WAN总网关,三家公有云分别部署分支网关;
- 搭建GRE/IPsec加密隧道,一旦专线断掉,这条链路自动顶上做兜底;
- 开启全网链路探测,实现主备链路自动切换,满足SRE对于网络容灾RTO的要求。
2.2.3 公有云之间互通方案
我们选择本地机房中转的方案,这套方案综合成本和维护复杂度来看是SRE视角下的最优解:
- 不同公有云之间互相访问的流量,全部经过本地核心机房中转;
- 不用在三家云之间两两拉专线,减少故障点,降低日常维护负担;
- 全网路由集中管控,流量审计也更好落地。
2.3 K8S网络标准化强制规范
- 统一CNI插件:所有集群不要使用云厂商自带的私有CNI(Terway、VPC‑CNI等),全部统一使用Calico,打开BGP全局路由,确保Pod在整个网络内都可以正常访问;
- 全局联邦DNS:部署一套统一的CoreDNS联邦集群,不同集群之间,可以用同样的服务名完成解析;
- 网络安全基线:全网遵循最小权限原则,防火墙、云安全组策略统一维护,只开放业务端口、集群管控端口、BGP相关端口;跨云通信全部走TLS加密;
- 网络监控基线:7×24小时盯着全网网络延迟、丢包率、抖动情况、隧道运行状态、BGP邻居连接状态,一旦异常及时告警。
3. 多K8S集群统一管控架构
3.1 管控组件选型
整套多集群管理能力,我们选用 Karmada多集群联邦 作为全局控制面:
- 控制面部署在本地VMware高可用集群上,etcd采用三副本部署,规避单点故障;
- 前面提到的5套公私云K8S集群,全部注册为Karmada的成员集群,接受统一调度管理。
3.2 全局调度策略
3.2.1 集群权重调度
- VMware 私有 K8S:权重100(核心主集群)
- OpenStack 私有 K8S:权重80(本地备用集群)
- 阿里云 / 腾讯云 / 华为云:权重60(公有云容灾集群)
日常情况下业务流量优先跑在本地私有集群,一方面节省公网带宽开销,另一方面也能降低访问时延。
3.2.2 故障自动污点驱逐策略
这是一套自动化故障处理逻辑,整个流程不需要人工介入:
- 监控系统检测到集群失联、apiserver访问失败、大量节点进入NotReady异常状态;
- Karmada控制面自动给故障集群打上不可调度污点;
- 把集群上现存的Pod驱逐出去,调度到其他健康集群继续运行;
- 故障集群直接被隔离,不再接收新的业务调度请求。
3.3 全局资源统一治理规范
- 统一镜像管理:搭建Nexus私有镜像仓库,本地部署主节点,同时在三家公有云搭建同步副本,业务就近拉取镜像,避免镜像拉取失败引发业务故障;
- 统一配置管理:ConfigMap、Secret、资源配额、污点、亲和性这类配置,全部全局统一分发,不要各集群各改各的;
- 统一版本发布:业务上线走联邦灰度、分批发布流程,禁止直接在单个集群做独立变更。
4. 存储与数据多活SRE规范
4.1 无状态业务数据规范
- 业务尽量做到本地无状态,持久化的数据全部下沉到全局中间件;
- Redis、MQ、MySQL采用本地为主、多云做从副本的多活架构;
- 中间件支持自动主从切换,上层业务基本无感知,方便业务快速跨云漂移。
4.2 有状态业务存储容灾规范
- 全局分布式存储底座:部署FDS/MinIO存储集群,在三家公有云部署存储网关,各个集群可以统一挂载PV/PVC;
- 跨云数据异步复制:本地存储和各个云端存储之间,定时做增量数据同步;
- 存储故障SOP:存储节点出问题自动隔离,依靠副本完成自愈;如果遇到整个集群级别的故障,自动切换到云端存储副本继续对外提供服务。
4.3 SRE数据一致性要求
- 执行容灾切换之前,先确认增量数据已经同步完成,避免数据丢失;
- 核心有状态业务代码层面,要做好事务、幂等、重试逻辑;
- 只要发生跨云切换操作,都要留存数据快照,万一出问题可以用来回滚。
5. 全域可观测体系
5.1 统一监控体系
- 全局Prometheus:Prometheus Server中心化直拉方式统一采集5套集群的各项指标,包含节点、容器、网络、资源、业务指标;(多个kubernetes_sd_configs)
- Grafana统一大盘:搭建集群健康大盘、资源使用大盘、容灾状态大盘、业务运行大盘,问题一眼就能看出来;
- 监控覆盖层级:网络层、集群层、节点层、容器层、业务层、基础设施层全部覆盖到位。
5.2 统一日志&链路追踪
- 全网络的日志统一采集、聚合、检索、审计;
- 打通全域链路追踪,跨集群的调用链可以完整串联起来;
- 方便故障根因定位,也能支撑SRE事后故障复盘工作。
5.3 告警分级SRE标准
| 告警级别 | 定义 | 响应SLA | 自动化动作 |
|---|---|---|---|
| P0灾难 | 集群整体宕机、全网业务不可用 | 5分钟响应,立刻处置 | 自动切流量、自动驱逐Pod、自动扩容 |
| P1严重 | 单个节点故障、局部业务异常 | 10分钟响应 | 推送告警通知,自动隔离故障节点 |
| P2一般 | 资源水位偏高、业务轻微抖动 | 30分钟响应 | 发出预警,条件允许自动扩容 |
| P3提示 | 日常运维变更、少量日志报错 | 工作时段处理即可 | 只做记录,不触发自动操作 |
5.4 SLO/SLI指标定义
- 集群可用率:99.99%
- 跨云网络调用成功率:99.99%
- 故障自动切换RTO:≤60s
- 业务恢复RPO:≤10s增量数据
6. 容灾切换SRE标准化流程
6.1 场景一:本地私有云整体异常 → 自动切换至公有云
提示:下面的触发条件会做多维度联合判断,避免网络抖动导致误切流量。
触发条件(全部条件综合判定)
- K8s apiserver连续30秒访问不通;
- 集群节点Ready占比低于60%;
- 业务健康探针连续5次探测失败;
- 网络探测确认本地机房出口链路中断。
全自动执行SOP
- 监控系统判定发生P0级别故障,触发整套应急流程;
- Karmada下调本地集群调度权重,打上不可调度污点,不再往故障集群调度新业务;
- 通过GSLB和网关,灰度切断本地机房流量,把业务流量分流到各个公有云集群;
- 在公有云上自动扩容业务Pod,挂载全局存储,对接云端中间件副本;
- 业务完整迁移到公有云,对外服务不会中断;
- 故障修好之后灰度回迁:先完成增量数据同步 → 小流量切回本地做业务验证 → 全量流量切回本地 → 清理销毁公有云上临时跑起来的业务实例。
6.2 场景二:单公有云失能 → 跨云自动切换
触发条件
某一套公有云集群网络中断、集群主控异常、业务探针全部探测失败。
全自动执行SOP
- 直接把故障公有云集群从调度池中摘除,不再分配业务;
- GSLB快速把故障集群的流量入口剔除;
- 剩下的健康集群自动补足业务副本数量,保证算力够用;
- 等故障公有云恢复正常,再重新加入调度池,流量逐步回流回去。
7. 全局流量调度架构
7.1 两级流量架构
- 第一层:GSLB全局四层负载
基于集群健康状态、访问时延、配置权重做智能调度;一旦集群故障,可以毫秒级把它从流量池摘掉,是整套容灾的总入口开关。 - 第二层:统一七层网关(APISIX/联邦Ingress)
统一管理路由、限流、熔断、重试、超时策略;所有集群的Ingress全部注册上来,集中治理。
7.2 切流模式标准化
- 紧急切换:遇到P0级故障,直接100%摘除故障集群,秒级完成切换;
- 灰度切换:日常演练、故障业务回迁的时候使用,权重一点点递进调整,最大程度保障业务稳定。
8. SRE稳定性保障机制
8.1 冗余架构兜底
- 网络:物理专线作为主链路,SD‑WAN隧道作为备用链路;
- 集群:本地两套私有集群 + 三套公有云集群做多活;
- 管控:Karmada控制面高可用部署,消除单点;
- 数据:多副本存储、跨云备份、定时留存快照。
8.2 变更风控规范
- 所有集群上的变更,都要走灰度、分批发布,并且支持回滚;
- 不要直接在单个集群上做紧急裸变更;
- 执行变更前,系统先自动校验集群健康状态,如果集群状态异常,直接禁止发布。
8.3 常态化容灾演练
演练不能只停留在文档上,要定期真实跑一遍,发现问题及时调优:
- 月度:单节点故障演练、网络中断演练;
- 季度:完整模拟本地机房整体故障,把业务切换上云的全流程演练;
- 半年:模拟某一套公有云宕机,做跨云切换演练;
- 每一次演练结束,输出复盘报告,对预案参数、SOP做优化调整。
9. 故障分级与应急SOP总览
9.1 故障分级
- 一级故障:全域业务整体中断
- 二级故障:单个集群业务中断
- 三级故障:部分节点或者局部服务异常
- 四级故障:监控预警、业务性能抖动,还没造成业务中断
9.2 统一应急原则
- 优先恢复业务,再定位根因,最后做复盘总结;
- 能自动化处理就优先自动化,人工只做兜底;
- 切换动作可控、回迁动作可控、所有变更都支持回滚。
10. 落地实施顺序
- 梳理全网网段,固化网段台账,杜绝网段冲突;
- 完成专线+SD‑WAN网络搭建,验证三层互通能力;
- 部署全局Nexus镜像仓库、FDS/MinIO存储、联邦DNS等底层底座;
- 把所有K8S集群的CNI统一替换为Calico,对齐网络基线;
- 部署Karmada多集群管控平面,把各个业务集群注册接入;
- 搭建全域监控、告警、可观测整套体系;
- 部署GSLB+统一网关,配置好容灾切流相关策略;
- 业务改造为联邦化部署,跑完各类容灾场景的完整演练;
- 固化SOP文档、告警阈值、调度权重、各项运维规范。
11. 风险识别与SRE规避方案
| 风险点 | 影响 | 规避方案 |
|---|---|---|
| 网段冲突 | 跨云路由异常,业务访问不通 | 维护全局网段台账,网段变更前做前置校验 |
| 网络抖动引发误切换 | 业务本身正常,却被错误触发容灾切换 | 设置30秒故障冷静期,多维度条件联合判定故障 |
| 跨云时延过高 | 业务响应变慢,性能下降 | 核心业务尽量就近调度,优先使用专线链路 |
| 切换之后数据不一致 | 有状态业务报错异常 | 跨云持续同步数据,同时做好快照备份 |
| 管控面单点故障 | 全局调度功能失效 | Karmada控制面采用三副本高可用部署 |
| 变更操作引发大面积故障 | 集群整体可用性下降 | 灰度分批发布,配置自动熔断保护 |
12. 版本变更记录
| 版本 | 日期 | 变更内容 | 变更人 |
|---|---|---|---|
| V1.0 | 2025‑02‑14 | 初始完整SRE多云容灾规范定稿 | SRE架构组 |