节点状态同步机制
K8S集群中,与节点就绪状态有关的组件,主要有四个,分别是集群的核心数据库etcd,集群的入口API Server,节点控制器以及驻守在集群节点上,直接管理节点的kubelet。
一方面,kubelet扮演的是集群控制器的角色,它定期从API Server获取Pod等相关资源的信息,并依照这些信息,控制运行在节点上Pod的执行;另外一方面,kubelet作为节点状况的监视器,它获取节点信息,并以集群客户端的角色,把这些状况同步到API Server。
Kubelet会使用上图中的NodeStatus机制,定期检查集群节点状况,并把节点状况同步到API Server。而NodeStatus判断节点就绪状况的一个主要依据,就是PLEG。
PLEG是Pod Lifecycle Events Generator的缩写,基本上它的执行逻辑,是定期检查节点上Pod运行情况,如果发现感兴趣的变化,PLEG就会把这种变化包装成Event发送给Kubelet的主同步机制syncLoop去处理。但是,在PLEG的Pod检查机制不能定期执行的时候,NodeStatus机制就会认为,这个节点的状况是不对的,从而把这种状况同步到API Server。
官方这张PLEG示意图,这个图片主要展示了两个过程。一方面,kubelet作为集群控制器,从API Server处获取pod spec changes,然后通过创建worker线程来创建或结束掉pod;另外一方面,PLEG定期检查容器状态,然后把状态,以事件的形式反馈给kubelet。
PLEG有两个关键的时间参数,一个是检查的执行间隔,另外一个是检查的超时时间。以默认情况为准,PLEG检查会间隔一秒,换句话说,每一次检查过程执行之后,PLEG会等待一秒钟,然后进行下一次检查;而每一次检查的超时时间是三分钟,如果一次PLEG检查操作不能在三分钟内完成,那么这个状况,会被上一节提到的NodeStatus机制,当做集群节点NotReady的凭据,同步给API Server.
相关文章
- 如何设置一个k8s节点上运行的最大的pod的数量?
- UI节点对运行效率的影响
- 32zTree - 用 zTree 方法 增 / 删 / 改 节点
- 31zTree - 高级 增 / 删 / 改 节点
- ROS机器人程序设计(原书第2版)2.2.1 节点与nodelet
- ROS机器人程序设计(原书第2版)3.6 可视化节点诊断
- [转]echarts tree (树图) 实现自定义节点图标 自定义样式 点击节点后线条变色 自适应高度 搜索后节点关键字标红
- elasticsearch6.0.1单机多节点集群搭建
- 国产数据库OpenGauss--在CentOS7.x系统中安装单节点集群、验证及简单数据管理
- Prometheus之监控节点
- 为什么zookeeper集群中节点配置个数是奇数个?
- 边缘节点为什么不能直接通过 kubernetes service 直接访问云端 master 节点中的 API Server
- LeetCode之024两两交换链表中的节点(相关话题:链表递归迭代)
- Unity 之 ShaderGraph Artistic节点解析汇总
- 《剑指offer》面试题13:两个链表的第一个公共节点
- 《剑指offer》面试题10:链表中倒数第k个节点
- 关于Unity中UI中的Image节点以及它的Image组件
- javascript节点操作appendChild()