K8s client-go 源码中,如何深入解析 Reflector 的实现细节?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3562个文字,预计阅读时间需要15分钟。
使用k8s client-go和informers实现持续获取集群所有资源对象、监听资源对象变更功能,并在本地维护资源对象内存缓存,减少对apiserver和对etcd的请求压力。Informers在启动时自动初始化。
k8s client-go k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述Reflector从kube-apiserver中list&watch资源对象,然后将对象的变化包装成Delta并将其丢到DeltaFIFO中。简单点来说,就是将Etcd 的对象及其变化反射到DeltaFIFO中。
Reflector首先通过List操作获取全量的资源对象数据,调用DeltaFIFO的Replace方法全量插入DeltaFIFO,然后后续通过Watch操作根据资源对象的变化类型相应的调用DeltaFIFO的Add、Update、Delete方法,将对象及其变化插入到DeltaFIFO中。
Reflector的健壮性处理机制Reflector有健壮性处理机制,用于处理与apiserver断连后重新进行List&Watch的场景。
本文共计3562个文字,预计阅读时间需要15分钟。
使用k8s client-go和informers实现持续获取集群所有资源对象、监听资源对象变更功能,并在本地维护资源对象内存缓存,减少对apiserver和对etcd的请求压力。Informers在启动时自动初始化。
k8s client-go k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 k8s client-go源码分析 informer源码分析(3)-Reflector源码分析 1.Reflector概述Reflector从kube-apiserver中list&watch资源对象,然后将对象的变化包装成Delta并将其丢到DeltaFIFO中。简单点来说,就是将Etcd 的对象及其变化反射到DeltaFIFO中。
Reflector首先通过List操作获取全量的资源对象数据,调用DeltaFIFO的Replace方法全量插入DeltaFIFO,然后后续通过Watch操作根据资源对象的变化类型相应的调用DeltaFIFO的Add、Update、Delete方法,将对象及其变化插入到DeltaFIFO中。
Reflector的健壮性处理机制Reflector有健壮性处理机制,用于处理与apiserver断连后重新进行List&Watch的场景。

