上一篇文章里,我们主要介绍了 kubernetes 世界中的 clientset 对象,它的主要作用是用来获取所有资源操作对象的工厂,所以从本质上来说,clientset 就是资源操作对象工厂的工厂。本篇文章里我们主要来介绍和在 client go 组件中和索引相关的一系列对象,其中包括了 indexer,index,以及 indices。
IndexFunc 和 Indexer 对象
对于 IndexFunc 对象和 Indexer 对象, 其图解以及相关源码如下:
//staging/src/k8s.io/client-go/tools/cache/index.go
type IndexFunc func(obj interface{}) ([]string, error)
type Indexers map[string]IndexFunc
Index 对象
对于 Index 其图解和相关源码如下:
//staging/src/k8s.io/client-go/tools/cache/index.go
type Index map[string]sets.String
Indices 对象
对于 Indices 其图解和相关源码如下:
//staging/src/k8s.io/client-go/tools/cache/index.go
type Indices map[string]Index
资源对象建立索引并存储的过程
对于 kubernetes 资源对象来说,其建立索引并存储的过程如下:
目前我们先写到这里,在下一篇文章中我们继续介绍 ThreadSafeStore 组件。