内容提要
Kubernetes v1.31引入了从缓存中进行一致性读取的功能,通过减少etcd负载和降低延迟来提高集群性能。大型集群在可扩展性方面将获得显著的收益。在5000个节点的可扩展性测试中,kube-apiserver CPU使用率减少了30%,etcd CPU使用率减少了25%。升级到Kubernetes v1.31并使用etcd版本3.4.31+或3.5.13+可以启用此功能。Kubernetes社区还在探索将分页支持引入到watch缓存中以进行未来的性能优化。
延伸解读
一致性读取为何关键
在Kubernetes中,一致性读取确保各组件能准确掌握集群最新状态,这对维持操作可靠性至关重要。然而,大型集群中从etcd获取并处理数据可能成为性能瓶颈,尤其是涉及标签或字段选择器过滤的请求,需要先拉取全量数据再在API Server内存中过滤。例如kubelet只需列出调度到其节点的Pod,但之前必须处理集群所有Pod,造成不必要的开销。
缓存一致性如何实现
新功能利用etcd的进度通知机制,让watch缓存能知晓自身数据的新鲜度。当请求一致性读取时,系统先检查缓存是否足够新;若不够,则向etcd查询进度通知,直到确认缓存足够新后再直接从缓存返回结果。这样,原本需要从etcd拉取大量数据的过滤请求,现在只需读取极少量元数据,显著提升了效率。
性能提升与适用条件
在5000节点集群的可扩展性测试中,启用该功能后kube-apiserver CPU使用率降低30%,etcd CPU使用率降低25%,99分位Pod LIST请求延迟从5秒降至1.5秒。要获得这些收益,集群需运行Kubernetes v1.31并搭配etcd 3.4.31+或3.5.13+;若etcd版本较旧,Kubernetes会自动回退到直接从etcd提供一致性读取,性能提升将无法体现。
未来优化方向
随着该功能在v1.31中进入Beta并默认启用,所有使用受支持etcd版本的Kubernetes用户都能无缝获得性能提升。社区还在探索将分页支持引入watch缓存,以进一步优化性能。这意味着未来大规模集群的读取效率有望继续提高,但具体时间表和实现细节尚未公布。
Q&A
Kubernetes v1.31的新功能是什么?
Kubernetes v1.31引入了从缓存中进行一致性读取的功能,减少了etcd负载和延迟。
一致性读取对Kubernetes有什么重要性?
一致性读取确保Kubernetes组件准确了解集群状态,维护操作的准确性和可靠性。
如何启用Kubernetes v1.31的一致性读取功能?
升级到Kubernetes v1.31并使用etcd版本3.4.31+或3.5.13+即可启用此功能。
Kubernetes v1.31在性能上有哪些显著改进?
在5000个节点的测试中,kube-apiserver CPU使用率减少了30%,etcd CPU使用率减少了25%,请求延迟显著降低。
Kubernetes社区未来有什么计划?
Kubernetes社区正在探索在watch缓存中引入分页支持,以进一步优化性能。
一致性读取如何提高集群响应速度?
通过从缓存中读取数据,减少了从etcd获取和处理数据的时间,从而显著降低延迟,提高响应速度。