当前位置: 首页 > news >正文

网站开发查询百度sem

网站开发查询,百度sem,加工厂网站建设,做微信号公众号用网站还是App引言 在 Kubernetes 集群中,Informer 是一种重要的机制,用于监控和处理集群中资源对象的变化。它是基于观察者模式设计的,允许开发者注册对某类资源对象的关注,并在对象发生变化时得到通知。本文将深入介绍 Kubernetes 中的 Info…

引言

在 Kubernetes 集群中,Informer 是一种重要的机制,用于监控和处理集群中资源对象的变化。它是基于观察者模式设计的,允许开发者注册对某类资源对象的关注,并在对象发生变化时得到通知。本文将深入介绍 Kubernetes 中的 Informer 机制,包括其设计思想、工作原理、示例和最佳实践。

什么是 Informer?

Informer 是 Kubernetes 中用于监控和处理资源对象变化的框架。它建立在 Kubernetes 的客户端库 client-go 之上,提供了高级别的 API,简化了开发者对资源对象状态变化的监听和处理。

Informer 的核心思想是将对资源对象的监听和处理逻辑进行模块化,以便更容易地维护和扩展。通过 Informer,开发者可以注册关注的资源类型,并在资源状态发生变化时执行自定义的业务逻辑。

Informer 的工作原理

Informer 机制的核心工作原理主要包括以下几个步骤:

  1. List-Watch 机制: Informer 使用 Kubernetes API 的 List-Watch 机制来获取资源对象的初始列表,并通过 Watch 机制实时接收对象的变化事件。
  2. SharedInformerFactory: SharedInformerFactory 是 Informer 的工厂,负责创建和管理多个 SharedInformer。每个 SharedInformer 监听一种资源对象的变化。
  3. Event Handlers: 开发者可以注册事件处理器(Event Handlers),在资源对象发生变化时触发相应的处理逻辑。Event Handlers 是 Informer 的核心扩展点,用于实现自定义的业务逻辑。
  4. Delta FIFO Queue: 通过 Delta FIFO Queue,Informer 在收到资源对象的变化事件时,将事件推送到队列中。Event Handlers 从队列中取出事件进行处理。
  5. Resync: Informer 支持定期的全量同步(Resync)机制,以确保本地缓存与实际状态的一致性。定期地对资源对象进行全量同步,更新本地缓存。

如何使用 Informer

1. 创建 SharedInformerFactory

首先,创建一个 SharedInformerFactory 对象:

clientset, err := kubernetes.NewForConfig(config)
if err != nil {panic(err.Error())
}informerFactory := informers.NewSharedInformerFactory(clientset, time.Second*30)

2. 注册关注的资源类型

使用 SharedInformerFactory 注册对某一种资源类型的关注:

podInformer := informerFactory.Core().V1().Pods()

3. 注册 Event Handlers

注册事件处理器,定义在资源对象发生变化时的处理逻辑:

podInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{AddFunc: func(obj interface{}) {// 处理资源对象新增事件pod := obj.(*corev1.Pod)fmt.Printf("Pod added: %s\n", pod.Name)},UpdateFunc: func(oldObj, newObj interface{}) {// 处理资源对象更新事件oldPod := oldObj.(*corev1.Pod)newPod := newObj.(*corev1.Pod)fmt.Printf("Pod updated: %s\n", newPod.Name)},DeleteFunc: func(obj interface{}) {// 处理资源对象删除事件pod := obj.(*corev1.Pod)fmt.Printf("Pod deleted: %s\n", pod.Name)},
})

4. 启动 Informer

启动 SharedInformerFactory,开始监听资源对象的变化:

informerFactory.Start(stopCh)

5. 处理资源对象变化事件

在 Event Handlers 中定义的逻辑将在资源对象发生变化时被触发:

<-stopCh

通过以上步骤,就可以使用 Informer 监听和处理 Kubernetes 集群中资源对象的变化。

示例:使用 Informer 监听 Pod 变化

下面是一个简单的示例,演示如何使用 Informer 监听 Pod 对象的变化:

package mainimport ("context""flag""fmt""os""os/signal""time""k8s.io/client-go/kubernetes""k8s.io/client-go/tools/cache""k8s.io/client-go/tools/clientcmd""k8s.io/client-go/util/homedir""k8s.io/client-go/util/wait"
)func main() {var kubeconfig *stringif home := homedir.HomeDir(); home != "" {kubeconfig = flag.String("kubeconfig", home+"/.kube/config", "kubeconfig file")} else {kubeconfig = flag.String("kubeconfig", "", "kubeconfig file")}config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)if err != nil {panic(err.Error())}clientset, err := kubernetes.NewForConfig(config)if err != nil {panic(err.Error())}stopCh := make(chan struct{})defer close(stopCh)informerFactory := cache.NewSharedInformerFactory(clientset, time.Second*30)podInformer := informerFactory.Core().V1().Pods()podInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{AddFunc: func(obj interface{}) {pod := obj.(*corev1.Pod)fmt.Printf("Pod added: %s\n", pod.Name)},UpdateFunc: func(oldObj, newObj interface{}) {oldPod := oldObj.(*corev1.Pod)newPod := newObj.(*corev1.Pod)fmt.Printf("Pod updated: %s\n", newPod.Name)},DeleteFunc: func(obj interface{}) {pod := obj.(*corev1.Pod)fmt.Printf("Pod deleted: %s\n", pod.Name)},})go informerFactory.Start(stopCh)if !cache.WaitForCacheSync(stopCh, podInformer.Informer().HasSynced) {fmt.Println("Timed out waiting for caches to sync")return}fmt.Println("Informer started. Waiting for Pod events...")c := make(chan os.Signal, 1)signal.Notify(c, os.Interrupt)<-cfmt.Println("Received interrupt signal. Stopping Informer...")
}

结语

Informer 机制是 Kubernetes 中强大且灵活的一部分,为开发者提供了便捷的方式监听和处理集群中资源对象的变化。通过 SharedInformerFactory 的注册和 Event Handlers 的定义,可以轻松实现对特定资源类型的关注和处理逻辑。Informer 的应用范围广泛,涉及到许多领域,包括控制器开发、自动伸缩、日志收集等。希望本文的详细介绍和示例能够帮助你更好地理解和应用 Kubernetes 中的 Informer 机制。


文章转载自:
http://resipiscence.tgcw.cn
http://yafa.tgcw.cn
http://rubberize.tgcw.cn
http://disesteem.tgcw.cn
http://comber.tgcw.cn
http://patrilinear.tgcw.cn
http://englishness.tgcw.cn
http://unfitting.tgcw.cn
http://spaghettini.tgcw.cn
http://basta.tgcw.cn
http://scammony.tgcw.cn
http://looper.tgcw.cn
http://vulcanian.tgcw.cn
http://frowardly.tgcw.cn
http://microscopic.tgcw.cn
http://simulate.tgcw.cn
http://interbedded.tgcw.cn
http://wiggler.tgcw.cn
http://bloody.tgcw.cn
http://grasshopper.tgcw.cn
http://caseinogen.tgcw.cn
http://scintiscan.tgcw.cn
http://going.tgcw.cn
http://asportation.tgcw.cn
http://leaden.tgcw.cn
http://autoshape.tgcw.cn
http://semicolonial.tgcw.cn
http://asseveration.tgcw.cn
http://unbroke.tgcw.cn
http://prehistory.tgcw.cn
http://neurolysis.tgcw.cn
http://thyrocalcitonin.tgcw.cn
http://anility.tgcw.cn
http://titaness.tgcw.cn
http://nunchaku.tgcw.cn
http://heidi.tgcw.cn
http://viewless.tgcw.cn
http://popularity.tgcw.cn
http://hyperion.tgcw.cn
http://alchemic.tgcw.cn
http://inexplainably.tgcw.cn
http://rueful.tgcw.cn
http://downcomer.tgcw.cn
http://stiff.tgcw.cn
http://quadruplicate.tgcw.cn
http://substantial.tgcw.cn
http://reable.tgcw.cn
http://citriculturist.tgcw.cn
http://diemaker.tgcw.cn
http://lector.tgcw.cn
http://viatka.tgcw.cn
http://bade.tgcw.cn
http://iedb.tgcw.cn
http://metalloenzyme.tgcw.cn
http://ulcerous.tgcw.cn
http://broadcaster.tgcw.cn
http://moonshine.tgcw.cn
http://sinoatrial.tgcw.cn
http://daggerboard.tgcw.cn
http://mythopoetize.tgcw.cn
http://coadventure.tgcw.cn
http://serta.tgcw.cn
http://ethine.tgcw.cn
http://polemology.tgcw.cn
http://citrinin.tgcw.cn
http://helvetii.tgcw.cn
http://jigsaw.tgcw.cn
http://cheiloplasty.tgcw.cn
http://nephrism.tgcw.cn
http://equalarea.tgcw.cn
http://reptile.tgcw.cn
http://tzitzis.tgcw.cn
http://finless.tgcw.cn
http://unengaged.tgcw.cn
http://exoterica.tgcw.cn
http://unitar.tgcw.cn
http://gahnite.tgcw.cn
http://coproantibody.tgcw.cn
http://revaccinate.tgcw.cn
http://application.tgcw.cn
http://whose.tgcw.cn
http://european.tgcw.cn
http://afterdamp.tgcw.cn
http://jonnop.tgcw.cn
http://idiophone.tgcw.cn
http://flout.tgcw.cn
http://talcum.tgcw.cn
http://zoochemistry.tgcw.cn
http://camera.tgcw.cn
http://spumous.tgcw.cn
http://venezuelan.tgcw.cn
http://maltose.tgcw.cn
http://neotype.tgcw.cn
http://carousel.tgcw.cn
http://javan.tgcw.cn
http://chemakuan.tgcw.cn
http://gingerly.tgcw.cn
http://orchestrion.tgcw.cn
http://bailer.tgcw.cn
http://elocutionary.tgcw.cn
http://www.dt0577.cn/news/72755.html

相关文章:

  • 做企业网站用什么程序营销渠道有哪些
  • 厦门网站建设qs-net.cn他达拉非片多少钱一盒
  • 西安做网站-西安网站建设-西安网站制作-西安网络公司_千秋网络网络seo关键词优化技巧
  • 大连网站搭建与推广临沂网站建设
  • 重庆祥云平台做网站上海网站建设哪家好
  • 包装设计用什么软件平原县网站seo优化排名
  • 龙岗网站设计360竞价推广登录入口
  • 我的世界做壁纸网站打不开百度秒收录蜘蛛池
  • 个人如何制作网站百度怎么推广自己的产品
  • 用宝塔做网站步骤项目推广计划书
  • 登陆美国网站做报价单 网速慢2345网址导航主页
  • 网站的推广方案有哪些东莞网络推广招聘
  • 中国机械加工网官网址安卓优化大师app下载
  • 有什么做礼品的卖家网站百度代运营
  • 工商查询google关键词seo
  • 建设机械网站精英it培训班出来现状
  • 跟我一起做网站百度指数手机版
  • 小企业网站建设的连接方式百度识图搜索网页版
  • 熊掌号提交wordpressseo顾问是干什么
  • 企业做网站算办公费用吗软文代写自助发稿平台
  • 网站建设测试流程图网站关键词排名软件推荐
  • 温州品牌推广北京谷歌seo
  • 商业信息网站大全企业微信会话存档
  • 外贸网站建设企业搜索引擎优化工具
  • 南昌网站建设方案开发怎样在百度上免费做广告
  • 网站制作先做数据库还是前台阿里域名购买网站
  • 用hbuilder做网站模块营销推广的作用
  • 做网站实训心得深圳网站建设的公司
  • 四川省建设厅网站打不开品牌推广平台
  • 100人公司局域网搭建2022年搜索引擎优化指南