Table of Contents
1.章节介绍
本章首先介绍SharedInformerFactory,了解其组成和作用。
然后以Podinformer为例,了解一个资源实例的Informer应该需要实现哪些函数。
本节并没有设计到具体图中的informer机制,只是从大的入口入手,看看SharedInformerFactory到底是什么

2. SharedInformerFactory
SharedInformerFactory封装了NewSharedIndexInformer方法。字如其名,SharedInformerFactory使用的是工厂模式来生成各类的Informer。无论是k8s控制器,还是自定义控制器, SharedInformerFactory都是非常重要的一环。所以首先分析SharedInformerFactory。这里以一个实例入手分析SharedInformerFactory。
2.1 SharedInformerFactory实例介绍
package main
import (
"fmt"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/informers"
"k8s.io/client-go/tools/cache"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
"time"
)
func main() {
config := &rest.Config{
Host: "http://172.21.0.16:8080",
}
client := clientset.NewForConfigOrDie(config)
// 生成SharedInformerFactory
factory := informers.NewSharedInformerFactory(client, 5 * time.Second)
// 生成PodInformer
podInformer := factory.Core().V1().Pods()
// 获得一个cache.SharedIndexInformer 单例模式
sharedInformer := podInformer.Informer()
//注册add, update, del处理事件
sharedInformer.AddEventHandler(cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {fmt.Printf("add: %v\n&

本文详细介绍了kubernetes client-go中的SharedInformerFactory,它作为工厂模式用于生成各种Informer。SharedInformerFactory允许共享相同资源类型的Informer以节省资源,但不同listOption需要不同factory。此外,通过PodInformer的例子展示了Informer的基本结构和功能,其核心为cache.SharedIndexInformer,负责资源的监听和更新。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



