kubernetes万级规模高可用

当集群节点超过5000时

8cf1d986cfb040998d715ded91f56e2f

问题

  • etcd 出现大量的读写延迟。
  • kube-apiserver 查询 pods/nodes 延时很高,甚至导致 etcd oom。
  • 控制器无法及时感知数据变化,如出现 watch 数据延迟。

解决方案:

100 节点增长到 4 千节点:

  • 从 apiserver 客户端的角度优先访问本地 cache,在客户端去做负载均衡
  • apiserver 服务端主要做了 watch 优化和 cache 索引优化
  • 在 etcd 内核上利用并发读提升单 etcd 集群读处理能力,基于 hashmap 的 freelist 管理新算法提高 etcd 存储上限,基于 raft learner 技术来提高多备能力

4 千节点增长到 8 千节点:

  • qps 限流管理和容量管理优化
  • etcd 单资源对象存储拆分
  • 组件规范全生命周期落地通过客户端的规范约束降低对 apiserver 的压力和以及穿透到 etcd 的压力等等

8 千节点增长到上万节点:

  • etcdcompact 算法优化
  • etcd 单节点多 multiboltdb 的架构优化
  • apiserver 的服务端数据压缩
  • 通过组件治理降低 etcd 写放大等
  • 同时开始打造常态化的压测服务能力

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!