随着集群规模扩大,Kubernetes 控制器在监控高基数资源时面临扩展挑战。客户端分片虽可行,但无法减少来自 API 服务器的数据量,导致效率低下。Kubernetes v1.36 引入的服务器端分片列表和监听功能(作为 alpha 特性,对应 KEP-5866)解决了这一效率问题。API 服务器根据控制器指定的哈希范围过滤事件,仅向每个副本发送相关数据。控制器使用 Informer 来列出和监听资源,并通过 WithTweakListOptions 集成 shardSelector。分片选择器用于根据对象的 metadata.uid 或 metadata.namespace 过滤资源。API 服务器在列表响应的元数据中返回 shardInfo 字段,以确认分片选择器是否正确应用。若该字段缺失,客户端必须处理完整的未过滤集合,可能不得不回退到客户端过滤。此功能需要启用 ShardedListAndWatch 特性门控。Kubernetes 社区寻求来自控制器作者和运维人员的反馈,尤其是那些管理大型集群的用户。该方法旨在提升控制器在苛刻 Kubernetes 环境中的性能和可扩展性。
kubernetes.io
Kubernetes v1.36: Server-Side Sharded List and Watch
Create attached notes ...
