当前位置:网站首页>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的操作就超时了,那么就会导致整个节点的状态发生变化。
边栏推荐
- Pymoo学习 (2):带约束的双目标优化问题
- Repository XXX does not have a Realease file「建议收藏」
- Vscode - code and file changes cannot be saved
- Failure analysis and solution of vscode PIO creation project
- Fundamentals of C language -- the data type meaning of 2-4 pointers and the analysis of forced type conversion
- Pinia (pineapple)
- Pymoo学习 (4): 多标准决策
- MySQL:不是MySQL问题的MySQL问题
- C语言基础篇 —— 2-6 指针、数组与sizeof运算符
- Solution for iPhone unable to open openv** file
猜你喜欢

Pymoo学习 (4): 多标准决策

食品安全|火腿肠午餐肉,真有说的那么不堪?

封玩家IP和机器码以及解开被封的教程

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

unity之制作二维码扫描

食品安全|喝鲜奶可能感染结核病?带你了解什么是牛奶灭菌

keil错误和解决办法(1):FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘

死磕遞歸1:遞推公式

详解一次SQL优化

Scene notes
随机推荐
JMeter之函数二次开发/插件开发(细版)
How many common SQL misuses are there in MySQL?
IDEA中给项目添加依赖的jar包
General paging implementation
Shell | 查看进程的方法的不完全总结
蓝桥杯真题:卡片[通俗易懂]
unity之制作二维码扫描
[31. Maze walking (BFS)]
PWN entry (3) heap
Vscode - code and file changes cannot be saved
C语言基础篇 —— 2-4 指针的数据类型含义和强制类型转换的解析
【Flutter -- 布局】线性布局(Row 和 Column)
Program environment and pretreatment
软件测试计划包括哪些内容,测试计划如何编写。分享测试计划模板
[MySQL Cluster fault recovery]
Ie box model and standard box model
食品安全|火腿肠午餐肉,真有说的那么不堪?
IR Drop 、EM、Noise 和Antenna
Major upgrade of openim - group chat reading diffusion model release group management function upgrade
Preliminary understanding of string