深入源码分析kubernetes informer机制(零)简单了解informer

这篇具有很好参考价值的文章主要介绍了深入源码分析kubernetes informer机制(零)简单了解informer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


[阅读指南]
基于kubernetes 1.27 stage版本
为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。


关于client-go

client-go是kubernetes节点与服务端进行资源交互的客户端库,提供了非常多的功能与组件,用来与Kubernetes API 进行交互与操作。常见的功能有管理和同步kubernetes资源、管理本地kubernetes资源缓存、认证和授权等。

Informer是什么

Informer 是一种建立在client-上的资源同步和事件监听的机制。它可以监控集群中的资源变化,并在资源发生变化时触发事件通知。他用到了Informer 通过与 Kubernetes API Server 进行交互,获取资源的最新状态,再将这些状态同步到本地缓存中。

为什么需要informer

当涉及大规模、高性能的系统时,直接与 API Server 通信可能会导致一些挑战和性能问题,而 Informer 的引入可以有效地减少 API Server 的压力,降低网络开销,实现响应式事件监听,提高应用程序的性能和响应速度,以及处理资源同步和冲突问题。这使得系统更加高效、稳定和可靠。

举个栗子。公司举办团建,如果通过私聊每个人来通知活动地点和活动,需要花费非常多的时间和精力。而将参与活动的人拉群并发一条公告,就能快速地同步团建信息了。informer就像是给clients拉了个群,将api-server的信息通过公告进行同步。

Informer工作流程

informer用到client-go的几个关键组件

  • reflecter 负责监听特定的kubernetes资源变化事件。
  • informer 负责从delta FIFO队列中取出资源变化事件,并进行缓存与索引的操作。
  • indexer 负责管理存储资源对象的索引。
  • custom controller 根据资源变化实现本地节点的一些管理操作,本地的kubernetes应用可以通过实现controller监控服务端资源的变化。

下面的图介绍了各个模块之间是怎么交互和工作的。
深入源码分析kubernetes informer机制(零)简单了解informer,kubernetes,kubernetes,容器,云原生,informer,client-go

根据这个关系图,可以了解到客户端的整个资源同步流程。简单地看就是如下几步,

  1. reflecter通过list/watch方法监听kubernetes api的资源变化 ->1
  2. reflecter将监听到的资源变化对象添加到fifo队列中 ->2
  3. informer从队列取出资源变化对象,并将取出的对象同步到本地缓存 ->3,4,5
  4. 同步缓存时,也会将资源对象回调至custom handler -> 6
  5. custom handler将资源对象加入到workqueue中等待处理 ->7
  6. work进程从workqueue中取出资源对象,再进行额外的处理操作 ->8,9

后续分析计划

后续将会按照这个同步流程的顺序来详细分析每个模块的代码和设计逻辑。
分析计划:文章来源地址https://www.toymoban.com/news/detail-655955.html

  1. Informer
  2. Refletor
  3. Resync机制
  4. DeltaFIFO
  5. Indexer
  6. Informer
  7. stream list VS list

到了这里,关于深入源码分析kubernetes informer机制(零)简单了解informer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [JDK8环境下的HashMap类应用及源码分析] 看源码了解HashMap的扩容机制

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄、CSDN博客专家 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 [Java基础] StringBuffer 和 StringBuilder 类应用及源码分析 [Java基础] 数组应用及源码分析 [Java基础] String,分析

    2024年02月10日
    浏览(48)
  • 深入了解Golang中的反射机制

    目录 反射 反射的分类 值反射 类型反射 运行时反射 编译时反射 接口反射 结构体反射 常用函数 值反射 类型反射 值反射和类型反射的区别 结构体反射 示例代码         反射是指在程序运行时动态地检查和修改对象的能力。在Go语言中,通过反射可以在运行时检查变量的

    2024年02月06日
    浏览(48)
  • 【Java】深入了解双亲委派机制(常说的类加载机制)

    ava虚拟机(JVM)的类加载机制是Java应用中不可或缺的一部分。本文将详细介绍JVM的双亲委派机制,并阐述各关键点。 双亲委派机制(Parent-Delegate Model)是Java类加载器中采用的一种类加载策略。该机制的核心思想是:如果一个类加载器收到了类加载请求,默认先将该请求委托

    2024年02月04日
    浏览(35)
  • Kubernetes日志查看指南:深入了解容器日志管理技术

    简介: Kubernetes(简称K8s)已成为现代容器化应用程序管理的主要平台之一。了解如何有效地查看和管理Kubernetes集群中的容器日志对于故障排除、性能优化和安全监控至关重要。本文将向您介绍一些基本的技术和工具,帮助您在Kubernetes环境中查看和分析容器日志。 查看单个

    2024年02月12日
    浏览(38)
  • 深入了解 Vue 3 组件间通信机制

    在 Vue3 中,组件是构建应用界面的核心概念之一。组件可以看作是可复用、自包含和可组合的代码块,用于封装 UI 元素和相应的行为逻辑。 通俗来说就是,组件(Component)是一种对数据和方法的简单封装,每一个组件有自己单独的逻辑,并且可以分别管理。不同的组件组合

    2024年02月13日
    浏览(32)
  • 深入了解 Flink 的检查点机制

    Flink 是一个流处理框架,用于实时数据处理。检查点(checkpoint)机制是 Flink 的一个核心组件,用于保证流处理作业的可靠性和容错性。在这篇文章中,我们将深入了解 Flink 的检查点机制,涵盖其核心概念、算法原理、实例代码以及未来发展趋势。 Flink 的检查点机制是一种保存

    2024年02月20日
    浏览(36)
  • 深入了解Kafka的数据持久化机制

    欢迎来到我的博客,代码的世界里,每一行都是一个故事 在消息传递的舞台上,数据就像是时间的旅行者,承载着信息的流动。然而,时间不停歇。本文将带你进入数据的永恒之路,探寻在Kafka中,数据如何通过持久化机制守护信息的不朽之旅。 持久化的基本概念: 在 Kaf

    2024年04月28日
    浏览(33)
  • 带你深入了解Android的事件分发机制

    Android的事件分发机制是指在Android系统中,如何将用户的触摸事件、按键事件等传递给正确的View进行处理的一套机制。它是Android应用程序中实现交互的重要部分,确保用户的操作能够被正确地捕获和处理。 Android的事件分发机制涉及到以下几个核心概念:事件源、事件分发、

    2024年02月16日
    浏览(32)
  • “深入剖析JVM内部机制:了解Java虚拟机的工作原理“

    标题:深入剖析JVM内部机制:了解Java虚拟机的工作原理 摘要:本文将深入剖析JVM内部机制,详细介绍Java虚拟机的工作原理。我们将探讨JVM的组成部分、类加载过程、内存管理、垃圾回收以及即时编译等关键概念。此外,还将提供示例代码来帮助读者更好地理解JVM的内部机制

    2024年02月11日
    浏览(42)
  • 深入了解Kubernetes(k8s):安装、使用和Java部署指南(持续更新中)

    Docker和Kubernetes是两个不同的概念和技术,它们在容器化应用和容器编排方面有着不同的功能和作用。 Docker: Docker是一个开源的容器化平台,用于构建、打包和运行应用程序。通过使用Docker,你可以将应用程序及其依赖项打包到一个独立的轻量级容器中,使其可以在不同的环

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包