1、大大规规模高可用多集群架构模高可用多集群架构字节跳动软件工程师2025/11/15陈陈君彦君彦什么是多集群?用户控制集群多集群调度控制集群控制集群多集群分发工作集群工作集群工作集群kubeletkubeletkubelet为什么要多集群?为什么要多集群?1.可可扩扩展性展性2.资源弹性3.故障隔离为什么要多集群?1.可扩展性2.资资源源弹弹性性3.故障隔离为什么要多集群?1.可扩展性2.资源弹性3.故障隔离故障隔离多集群的挑战发布滚动粒度Deploymentreplicas:10maxUnavailable:10%=1Deploymentreplicas:2maxUnavailable:10%
2、=1Deploymentreplicas:2maxUnavailable:10%=1Deploymentreplicas:2maxUnavailable:10%=1Deploymentreplicas:2maxUnavailable:10%=1Deploymentreplicas:2maxUnavailable:10%=1maxUnavailable 总和:5资源重均衡A:30B:30C:30D:30A:0B:40C:40D:40maxUnavailable:10资源重均衡A:30B:30C:30D:30A:0B:30C:30D:30A:0B:40C:40D:40可用量:90资源重均衡A:30
3、B:30C:30D:30A:20B:3040C:30D:30A:10B:40C:3040D:30A:0B:40C:40D:3040可用量:110可用量:110可用量:110多集群协调控制循环给定当前副本分布 和目标分布 求中间状态 满足以下限制条件:全局约束(如 maxUnavailable、maxSurge)最大化滚动吞吐量稳定、确定性的行为效果更复杂的工作负载其他工作负载类型容器 exec/restart批量发布(Batched rollout)基于时间的自动扩缩容收益精准滚动粒度提升长尾效率提升滚动稳定性行为更可预测启用全局编排前,升级期间每个实例的滚动时长后期并行执行的pod数不断变小
4、收益精准滚动粒度提升长尾效率提升滚动稳定性行为更可预测4号集群升级完成后归还 PDB 配额,均分到所有集群驱逐(右边橙线第二轮波峰)只在 10:45 后才发生控制面集中的风险集群自发操作协调调度器重调度单机驱逐节点维护 drain 操作全局端到端保护全局端到端保护架构单集群可用性估算webhook 无限向上发散list-watch(aggregator)持续向下偏离可用性估算webhook 无限向上发散list-watch(aggregator)持续向下偏离成效可能存在竞态时钟偏差7 天内每小时 webhook 拦截率(含真陽性及假陽性)容灾能力etcd 数据损坏控制器 bug可扩展性优化点:压缩事件,限制对象大小动态 label selector 索引Webhook 请求批处理Pod Watch 分片可扩展性最大机房常态峰值23 个微服务集群16 万个 PodProtector150 万个受保护 Pod7 万 事件/秒400 首次删除/秒各种多集群架构总结Podseidon:自下而上的全局可用性安全网https:/