kubelet PLEG 实现

news2024/10/10 21:00:49

概述

kubelet的主要作用是确保pod状态和podspec保持一致,这里的pod状态包括pod中的container状态,个数等。

为了达到这个目的,kubelet需要从多个来源watch pod spec的变化,并周期从container runtime获取最新的container状态。比如创建了包括三个container的pod,当其中一个container异常退出时,kubelet能通过PLEG及时发现此事件并重建container。

PLEG(pod lifecycle event generate)是kubelet中的一个子模块,周期从container runtime获取最新的container状态,生成pod生命周期事件,并将此事件发到channel中,kubelet从channel获取事件进行相应的处理。

PLEG 全称是 Pod Lifecycle Event Generator,用来为 kubelet 生成 container runtime 的 pod 生命周期事件,这样 kubelet 就可以根据 pod 的 spec 和 status 对比,来执行对应的控制逻辑。

在 1.1 及之前的 kubelet 中是没有 PLEG 的实现的。kubelet 会为每个 pod 单独启动一个 worker,这个 worker 负责向 container runtime 查询该 pod 对应的 sandbox 和 container 的状态,并进行状态同步逻辑的执行。这种 one worker per pod 的 polling 模型给 kubelet 带来了较大的性能损耗。即使这个 pod 没有任何的状态变化,也要不停的对 container runtime 进行主动查询。

因此在 1.2 中,kubelet 引入了 PLEG,将所有 container runtime 上 sandbox 和 container 的状态变化事件统一到 PLEG 这个单独的组件中,实现了 one worker all pods。这种实现相比于 one worker per pod 已经带来了较大的性能提升,详细实现会在后文进行介绍。但是默认情况下,仍然需要每秒一次的主动向 container runtime 查询,在 node 负载很高的情况下,依然会有一定的性能问题,比较常见的情况是导致 node not ready,错误原因是 PLEG is not healthy

在 1.26 中,kubelet 引入了 Evented PLEG,为了和之前的 PLEG 实现区别,之前的 PLEG 称为 Generic PLEG。当然,Evented PLEG 并不是为了取代 Generic PLEG,而是和 Generic PLEG 配合,降低 Generic PLEG 的 polling 频率,从而提高性能的同时,也能保证实时性。

kubelet 组件中的模块 

上图展示了 kubelet 组件中的模块以及模块间的划分。

  • PLEG(Pod Lifecycle Event Generator) PLEG 是 kubelet 的核心模块,PLEG 会一直调用 container runtime 获取本节点 containers/sandboxes 的信息,并与自身维护的 pods cache 信息进行对比,生成对应的 PodLifecycleEvent,然后输出到 eventChannel 中,通过 eventChannel 发送到 kubelet syncLoop 进行消费,然后由 kubelet syncPod 来触发 pod 同步处理过程,最终达到用户的期望状态。

Generic PLEG

Generic PLEG 定时(默认1s)向 runtime 进行查询,这个过程称为 relist,这里会调用 cri 的 ListPodSandbox 和 ListContainers接口。runtime 返回所有的数据之后,PLEG会根据sandbox 和 container上的数据,对应的Pod 上并更新到缓存中。同时组装成事件向 PLEG Channel 发送。

kubelet 会在 pod sync loop 中监听 PLEG Channel,从而针对状态变化执行相应的逻辑,来尽量保证 pod spec 和 status 的一致。 

Evented PLEG

引入 Evented PLEG 后,对 Generic PLEG 做了些许调整,主要是 relist 的周期和阈值,以及对缓存的更新策略。

  • relist 的同步周期由 1s 增加到 300s。同步阈值从 3min 增加到 10min。
  • 缓存更新时,updateTime 不再是取本地的时间,而是 runtime 返回的时间。

除此之外,Generic PLEG 会和之前一样运行,这样也保证了及时 Evented PLEG 丢失了一些 状态变更的 event,也可以由 Generic PLEG 兜底。

Evented PLEG 会调用 runtime 的 GetContainerEvents 来监听 runtime 中的事件,然后生成 pod 的 event,并发送到 PLEG Channel 中供 kubelet pod sync loop 消费。

如果 Evented 不能按照预期工作(比如 runtime 不支持 GetContainerEvents),还会降级到 Generic PLEG。降级逻辑是:

  • 停止自己
  • 停止已有的 Generic PLEG
  • 更新 Generic PLEG 的 relist 周期和阈值为 1s, 3min
  • 启动新的 Generic PLEG

https://www.myway5.com/wp-content/uploads/2023/02/Snipaste_2023-02-27_16-58-56.png

 因为 Evented PLEG 和 Generic PLEG 会同时更新缓存,所以在更新时还会对比当前值和缓存值的时间戳,保证当前值是更新的状态,才会更新到缓存中。

参考文章

  • Kubelet: Pod Lifecycle Event Generator (PLEG)
  • KEP-3386: Kubelet Evented PLEG for Better Performance

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2203106.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux:线程锁】

目录 锁的接口: ​编辑 关于锁的几个问题: 从底层实现理解锁: 锁的接口: pthread_mutex_lock函数申请锁成功后,会返回,申请失败,函数不返回,继续申请,线程阻塞pthrea…

python33_数字格式化

数字格式化 数字格式输出说明3.1415926{:.2f}3.14保留小数点后两位3.1415926{:.2f}3.14带符号保留小数点后2位3.1415926{:.0f}3不带小数&#xff0c;但是会四舍五入5{:0>2d}05数字补0&#xff0c;填充左边&#xff0c;宽度为25{:x<4d}5xxx数字补x&#xff0c;填充右边&a…

IPv6 DAD和地址解析实验

实验目的 1、 观察并分析IPv6 DAD过程 2、 观察并分析IPv6地址解析过程 实验拓扑 实验步骤 1、观察并分析IPv6 DAD过程 在AR1的G0/0/0开启抓包。AR1的G0/0/0接口配置ipv6地址2012::1/64。在接口配置ipv6地址后&#xff0c;ipv6有一段称为Tentative生命期&#xff0c;在该阶…

Sql Server 生成脚本中的快速删除空行问题

使用 Sql Server 生成脚本&#xff0c;例如生成存储过程&#xff0c;常常会因为存在大量没用的空行。如下图5w行的脚本&#xff0c;空行很多无用&#xff0c;需要删除。 手动删除很麻烦&#xff0c;想通过快捷方法删除这些空行&#xff0c;方法其实很简单&#xff01; 1、使用…

Vue集成echarts实现统计图表

目录 一、概述 二、Vue实现echarts图表模版 三、测试运行项目 一、概述 官网地址&#xff1a;https://echarts.apache.org/examples/zh/index.html 目前的官网的echarts例子比较古老&#xff0c;如果集成Vue里面需要进行修改&#xff0c;所以可以新建一个Vue的项目代码&am…

不同类型的 LLM 有什么区别

LLM 有不同类型的模型&#xff0c;例如 Base 和 Instruct&#xff0c;他们有什么区别呢&#xff0c;Base 模型是基于原始语料进行训练的模型&#xff0c;生成结果时会持续生成&#xff0c;直到达到最大长度。而指令模型是经过问答数据集进行训练的&#xff0c;回答是会根据上下…

【AI大模型】关于ToB垂直领域大模型的一点探索和尝试

本文分享了物流技术团队在垂直领域大模型开发和部署过程中的技术细节、挑战解决策略以及实际应用案例。 ‍ 背景 大家好&#xff0c;我们是淘天物流技术团队&#xff0c;在过去一年多的实践工作中&#xff0c;我们团队围绕“物流体验”这一垂直领域&#xff0c;尝试通过垂直…

大坝渗流监测设备——渗压计

渗压计是一种用于监测大坝等水工建筑物渗流压力的重要设备&#xff0c;其准确性和可靠性对于保障大坝安全运行至关重要。南京峟思将为大家详细介绍渗压计的工作原理、安装方法及其在大坝渗流监测中的应用。 渗压计主要利用振弦频率的变化来测量渗透水压力。设备由透水部件、感应…

使用UDP网络型灯光协议控制器控制DMX512步进电机

目录 1、硬件介绍 &#xff08;1&#xff09;灯光控制器 &#xff08;2&#xff09;步进电机 &#xff08;3&#xff09;接线图 &#xff08;4&#xff09;多路步进电机DMX接线 2、调试软件测试 &#xff08;1&#xff09;软件界面 &#xff08;2&#xff09;控制器ip地…

今夜无眠!Model 2来猎杀国产新能源了

文 | AUTO芯球 作者 | 雷慢 10月11日国内新能源车企注定会有一个不眠夜&#xff0c; 为什么啊&#xff0c;马斯克已经放出狠话了&#xff0c; 10月10日&#xff08;美东时间&#xff09;的发布会“将载入史册”&#xff0c; 别不信啊&#xff0c;据说这次会发布三款车&…

AI测试入门:向量数据库 知识图谱的适用场景

AI测试入门:向量数据库 & 知识图谱的适用场景 1. 向量数据库概述2. 知识图谱概述3. 适用场景分析3.1 使用向量数据库的场景3.2 使用知识图谱的场景4. 案例分析4.1 搜索引擎中的应用4.2 医疗健康领域的应用4.3 社交媒体平台中的应用4.4 供应链管理中的应用总结1. 向量数据库…

其他浏览器可以联网,但edge不能联网

问题描述&#xff1a; 今早edge无法上网&#xff0c;检测网络连接正常&#xff0c;而且其他chrome&#xff0c;Firefox和360浏览器都可以上网。 解决方案&#xff1a; 注意&#xff1a;为防止是代理问题&#xff0c;可以在扩展中禁用后再试试 如果没有代理或者禁用代理也不…

AIOps探索 | AI与人类协作:未来IT运维应急响应的新模式

内容来源于--布博士&#xff08;擎创科技产品解决方案专家&#xff09; 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;如同一场汹涌澎湃的浪潮&#xff0c;席卷着各个行业领域&#xff0c;IT 运维应急响应也正站在这一变革的风口浪尖。随着信息技术架构…

为什么越来越多的男性开始光顾美容机构?美业管理系统/个案疗愈系统源码

近年来&#xff0c;我们可以清晰地观察到一个明显的趋势&#xff1a;越来越多的男性开始光顾医美美容机构。这种现象的出现并非偶然&#xff0c;而是由多种因素共同作用的结果。 本文将结合社会观念的转变、媒体和广告的影响、职业发展压力、技术进步以及自我关注和健康意识的…

基于非线性干扰观测器的六自由度机械臂控制

1.观测器公式推导 当存在扰动时&#xff0c;机械臂的动力学方程如下&#xff1a; 对上式进行恒等变化得&#xff1a; 设计干扰观测器&#xff1a; 令&#xff0c;则&#xff1a; 观测误差满足 &#xff0c;取&#xff0c;因加速度不可测&#xff0c;定义辅助向量&#xff1a; …

爬虫工具——Fidder的安装

一、Fidder的安装 出现这样的界面就是安装成功了 二、Fiddler的配置 1.端监听手机端设置 但是如果你想要对手机上的app进行抓包怎么办呢&#xff0c;那么你还需要进行以下操作&#xff1a; 首先你的Fiddler所在的电脑和手机必须处在同一个局域网内(即连着同一个路由器)。 …

【MySQL 10】索引

目录 1.初始索引 1.1索引概念 1.2常见索引分类 1.3 见一下索引&#xff08;案例&#xff09; 2.关于物理磁盘 2.1见一下物理磁盘 2.2 了解磁盘的存储结构 2.3对磁盘的逻辑结构进行抽象 4.磁盘随机访问与连续访问 5.MySQL表与磁盘 3. MySQL 与磁盘的交互 3.1MySQL 与…

中国市场的NFT生存法则:消费属性与圈子文化

自2021年NFT数字藏品概念爆发以来&#xff0c;它迅速吸引了全球范围内的玩家、投资者以及艺术家和品牌的参与。然而&#xff0c;随着市场逐渐冷却&#xff0c;尤其是在中国市场&#xff0c;NFT的定位变得越来越微妙和复杂。在全球其他地区&#xff0c;NFT逐渐走向金融化&#x…

开源2+1链动S2B2C商城小程序下社区团长的社群温度营造与商业价值实现

摘要&#xff1a;本文聚焦于社区团长在社群运营中的角色&#xff0c;阐述在开源21链动S2B2C商城小程序的背景下&#xff0c;社区团长如何通过多种角色互动营造社群温度&#xff0c;进而实现商业价值中的复购增长等目标&#xff0c;分析其中的作用机制、面临的挑战及应对策略。 …

数据结构-八大排序之基数排序

基数排序&#xff08;RadixSort&#xff09; 1. 理论知识&#xff1a; 1.1 原理&#xff1a; 定义0-9 十个桶 (数组&#xff09;&#xff0c;先排序个位&#xff0c;再排序十位&#xff0c;排序百位... 1.2 例子&#xff1a; ①根据最大值确定需要执行多少遍&#xff08;这里…