当前位置:网站首页>Kubernetes Kubelet管理pod核心流程
Kubernetes Kubelet管理pod核心流程
2022-07-23 14:32:00 【富士康质检员张全蛋】
来看看pod worker的工作细节。

kubelet它本身的synloop,就是去监听pod的状态变化,这个pod的状态变化就是一个一个的pod的update,或者是add事件,接收到这些事件之后,它就会将事件存在updateoption里面,那么不同的worker,在kubelet里面有多个worker,每个worker都会从队列里面获取这些pod变更事件的清单。
然后针对每一个pod,它就会去执行sync pod的操作,sync pod里面最重要的行为就是computepodactions,也就是针对这个pod采取什么样的行为,它会去比对当前节点上面的已经在运行的容器进程,然后去判断说,如果pod是新的我就create,如果pod是已经存在的,比如说是delete事件,那么我就应该去删除,如果是一个更新事件,那么我就要去判断运行的容器进程和你当前的pod是不是匹配的,比如它的哈希值变的话,那么我就要重建,这就是computepodactions所做的事情。
它算完了之后就需要通过cri的接口,去create这些进程,或者kill这些进程。
右边还有个组件叫做pleg,它主要是pod lifecycle event的一个汇聚器,就是pod运行完之后,上面左边部分是用来管理pod的生命周期,管理完之后这些pod的状态如何上报,那么就是通过pleg组件去上报的。
它在pleg组件里面维护了一个pod cache,它本地的一个缓存,这个pleg会去定期的往container runtime里面去发一个list的操作,去获取当前节点上pod的清单,正在运行的pod清单,那么这里就会把当前所有在运行pod状态在pleg这里汇聚,由pleg 通过pod lifecycle event发回上报给apiserver,apiserver那端就知道这个node节点上面所有pod的状态了。
如果contained runtime不响应了,那么relist就会失败,relist失败,那么这些状态就上报不了,那么最终这个状态无法上报,那么kubernets就会认为你整个节点有问题。
所以runtime本身不响应,那么这个节点会变的不正常。
还有就是bug,退出容器的gc没有做好,就节点上出现了几千上万的exit container在那里,pleg再去跟runtime relist 这些container的时候,他就会去遍历所有的已经退出的容器,就会导致时间非常的长,它没有办法及时返回所有容器的清单,没有在它规定的时间内返回,那么整个pleg的操作就超时了,那么就会导致整个节点的状态发生变化。
边栏推荐
- 【Flutter -- 布局】弹性布局(Flex 和 Expanded)
- General paging implementation
- Sprintf and cv:: puttext
- ROS2自学笔记:RQT可视化工具
- keil错误和解决办法(1):FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘
- MySQL中有几种常见的 SQL 错误用法?
- 【Flutter -- 布局】线性布局(Row 和 Column)
- 股票历史数据下载接口汇总(动态更新)
- 合宙ESP32C3基于VSCode PIO Arduino开发框架初探教程
- Investment and finance report this week: Web3 game bear market attracts gold
猜你喜欢

PPPoE协议讲解以及拨号过程Wireshark抓包解析

Compose canvas pie chart effect drawing

详解一次SQL优化

Explication détaillée de l'injection aveugle d'erreur SQL

Pinduoduo app product details interface to obtain activity_ ID value (pinduoduo activity_id interface)

Preliminary tutorial of Hezhou esp32c3 PIO Arduino development framework based on vscode

Eureka notes

【30. n-皇后问题】

【31. 走迷宫(BFS)】

Description and usage of Axi interconnect IP core
随机推荐
林志颖仍在重症室 将进行二轮手术:警方称其并未系安全带
零基础怎么自学软件测试?十年测试老鸟最强软件测试学习路线图
MySQL:不是MySQL问题的MySQL问题
Nodejs implements token login registration (koa2)
LQR 控制学习-LQR控制 MATLAB官方教程-LQR 控制器_状态空间系统Matlab/Simulink建模分析
Agile testing practice in large-scale teams
sprintf和cv::putText
[web vulnerability exploration] SQL injection vulnerability
leetcode刷题记录
虚拟机网络连接方式
[30. N-queen problem]
学习MySQL这一篇就够了
keil错误和解决办法(1):FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘
What about the reason why GOM and GEE set up a black screen and the fact that individual equipment maps are not displayed?
在 Kotlin 中使用 Flow Builder 创建流
Preliminary understanding of string
常见模拟电路设计 一(含仿真):方波、三角波、正弦波的互相发生「建议收藏」
二十四节气之大暑
Detailed explanation of SQL bool blind note and time blind note
Closure of JS