Kubernetes高可用部署主节点数量规划及负载均衡选型咨询
Kubernetes高可用集群部署问题解答
Master节点数量配置规则
Kubernetes 控制面的高可用能力依赖etcd集群的Raft共识算法,核心规则如下:
- Master节点数量必须为奇数:Raft算法要求集群存在多数派才能正常对外提供服务,奇数节点可以在同等节点数量下获得最高的容错能力,容错数公式为
(N-1)/2,其中N为Master/etcd节点数量 - 不同Worker规模对应的Master节点参考配置:
- Worker节点数 ≤ 100:3个Master节点,可容忍1个控制面节点故障,完全满足中小规模集群需求
- Worker节点数 100~500:5个Master节点,可容忍2个控制面节点故障,应对中等规模集群的高并发请求压力
- Worker节点数 500~5000:7个Master节点,可容忍3个控制面节点故障,符合Kubernetes官方对于大规模集群的推荐配置
- 注意:不建议部署超过7个Master节点,更多的节点会降低etcd集群的共识效率,反而拖累控制面响应速度。目前没有和Worker节点数严格绑定的线性计算公式,以上数值是生产环境沉淀的通用经验值。
负载均衡方案选型:HAProxy vs Nginx
两款工具都可用于Kubernetes apiserver的前端负载均衡,没有绝对的优劣,根据你的实际场景选择即可:
- 推荐选HAProxy的场景:
- 只需要做四层TCP负载转发apiserver的6443端口,HAProxy原生支持TCP健康检查、故障节点自动摘除,配置复杂度远低于Nginx的四层模块
- 集群规模较大,对转发性能、延迟要求高,HAProxy的四层转发性能优于Nginx,稳定性更强
- 需要搭配keepalived实现负载均衡自身的高可用,HAProxy+keepalived是Kubernetes高可用集群领域最成熟的方案,公开的问题排查经验更丰富,踩坑成本低
- 推荐选Nginx的场景:
- 你的团队已经有成熟的Nginx运维经验,不想额外引入新技术栈增加运维负担
- 负载均衡需要同时承载七层服务转发、Ingress网关等复用需求,Nginx的七层配置灵活度更高,生态更完善
如果没有特殊的技术栈绑定,纯Kubernetes高可用集群的apiserver负载优先选HAProxy即可。
内容的提问来源于stack exchange,提问作者Youssef CH
相关产品推荐
相关产品推荐

