1、分享主题:零侵入架构超大规模k8s集群kube-apiserver内存占用降低50%实战优化,蚂蚁集团开发工程师,2025/11/15,明廷樟,明廷樟嘉宾职位:软件工程师,个人简介:蚂蚁集团 开发工程师,形象照,CONTENT,目录,01,背景:超大k8s集群的挑战,02,方案:架构升级-分而治之,03,总结:收益及问题总结,04,展望:未来的一些思路,结论先行,效果:apiserver/etcd 性能提升,Apiserver:实例个数不变的情况下 平均内存下降50%,Etcd性能:cpu seconds 下降40%,背景:超大规模k8s集群挑战,业务影响:kube-apiserver的稳定性
2、对业务的影响,背景:超大规模k8s集群挑战,资源压力:面临巨大的资源(内存,单机等)压力,背景:超大规模k8s集群挑战,资源耦合风险:,背景:所有资源类型(Pod,Service,CRD等)共享Apiserver实例,资源保障等级不一风险:非核心资源(Event)挤占核心资源(Pod)处理能力案例:event流量导致整个集群出现雪崩,CONTENT,目录,01,背景:超大k8s集群的挑战,02,方案:架构升级-分而治之,03,总结:收益及问题总结,04,展望:未来的一些思路,方案:架构升级-分而治之,整体思路:分而治之,方案:架构升级-分而治之,理论基础:apiserver 内部watch c
3、ache逻辑,要点:Watch Cache:apiserver会对所有资源粒度从etcd缓存到本地逻辑:如果某个资源没有watch cache,则会直接打穿到etcd,方案:架构升级-分而治之,理论基础:按照资源类别的请求分析,要点:节约内存资源:pod分组apiserver只需要cache pod资源的数据,方案:架构升级-分而治之,技术方案:流量按资源进行路由,方案:架构升级-分而治之,技术方案:网关 kok(kubernetes on kubernetes)-kom(kubernetes on mesh),方案:架构升级-分而治之,技术方案:kom网关 单集群流量入口,方案:架构升级-分
4、而治之,技术方案:kom网关 无感升级,方案:架构升级-分而治之,技术方案:资源拆分分组,分组:Pod:交付核心资源,独占Config分组:配置类资源,包括(nodes/configmaps/leases/secrets)等资源Event:非交付链路资源Default分组:cache所有资源,一旦任何异常,可将流量回切至该分组,方案:架构升级-分而治之,技术方案:apiserver分组,关键参数:-default-watch-cache-size:默认的watch cache size大小-watch-cache-sizes:对应资源的watch cache 个数比如endpoints#0,e
5、ndpointslices.discovery.k8s.io#0,nodes#0,方案:架构升级-分而治之,技术方案:灰度无感丝滑升级,流程:新建 其他(pod)分组将流量按照useragent将客户端从原有apiserver(default分组)灰度切流,CONTENT,目录,01,背景:超大k8s集群的挑战,02,方案:架构升级-分而治之,03,总结:收益及问题总结,04,展望:未来的一些思路,总结:收益,效果:kom网关的一些收益,7层流量负载均衡,成功率提升,灰度升级,效果:apiserver/etcd性能收益,Apiserver:实例个数不变的情况下 平均内存下降50%,Etcd性能
6、:cpu seconds 下降40%,总结:收益,总结:上线过程中遇到的一些问题,问题1:event apiserver分组从etcd list all pods,原因:-node鉴权/TokenRequest featuregate开启 会导致 list all pods,总结:上线过程中遇到的一些问题,问题2:apiserver会周期性调用etcd 进行 count key,解决:-etcd-count-metric-poll-period=0,总结:上线过程中遇到的一些