watch.Interface vs.cache.NewInformer vs.cache.NewSharedIndexInformer
监控 Kubernetes 集群中的资源时,Kubernetes client-go 中有多个选项可用包裹。本文旨在阐明 watch.Interface、cache.NewInformer、cache.NewSharedInformer 和 cache.NewSharedIndexInformer 之间的区别。
抽象级别
这些 API 之间的主要区别在于它们的级别抽象:
- watch.Interface 提供最低级别的抽象,可以直接访问来自 API 服务器的事件流。
- cache.NewInformer 向 watch 接口添加缓存,更容易管理内存中的资源。
- cache.NewSharedInformer 和 cache.NewSharedIndexInformer 是更高级别的抽象,它们分别在多个通知程序之间共享资源并添加索引以实现高效的数据检索。
功能
watch.Interface
- 获取一个监视通道,该通道为特定资源发出“已添加”、“已修改”和“已删除”事件。
- 提供对事件的原始访问,但需要手动事件处理。
cache.NewInformer
- 与 watch.Interface 类似,但自动管理缓存并提供 OnAdd()、OnUpdate() 和 OnDelete() 处理程序用于事件处理。
- 包括对缓存资源状态的访问,使其成为跟踪随时间变化的理想选择。
cache.NewSharedInformer
- 与其他通知者共享 API 服务器连接和监视通道。
- 通过避免重复连接和减少内存开销来有效管理资源。
cache.NewSharedIndexInformer
- 为缓存数据添加索引,允许通过特定属性更快地检索资源。
- 在处理大型数据集或需要根据特定条件查询资源时很有用。
推荐
大多数情况下,建议使用cache.NewSharedInformer或cache.NewSharedIndexInformer资源监控。这些更高级别的抽象提供了性能和易用性之间的平衡方法,同时处理监视管理和缓存的复杂性。
以上是监控 Kubernetes 资源时:watch.Interface、cache.NewInformer 还是 cache.NewSharedInformer?的详细内容。更多信息请关注PHP中文网其他相关文章!