
reflector 起到一个承上启下的作用,它通过 List & Watch kubernetes api 中的指定资源类型
与 index 有关的有三个概念
KeyFunc - runtime.Object 经过 keyFunc 的处理之后拿到 objectKey,通常是 namespace/nameIndexFunc - runtime.Object 经过 indexFunc 的处理之后,拿到一系列 indexValueIndex: 通过 indexValue 可以拿到 object key 的 set同时有两个 map 用来管理一组 index
Indexers - 对应 name 到 IndexFunc 的映射关系Indices - 对应 name 到 Index 的映射关系正常的 Index 流程如下
KeyFunc 获取到 object 的 objectKeyIndexers
Indexer 的 name 和 IndexFuncIndexFunc 计算 object 的 indexValuename 确定 Index,然后将 objectKey 加入到 indexValue 对应的 Set 中去