在K8S中创建节点时,仅仅是创建了一个描述该节点的API对象。节点API对象创建成功后,K8S将检查该节点是否有效。
|
|
K8S在APIServer上创建一个节点对象(节点描述),并且基于metadata.name
字段对节点进行健康检查。如果节点组件正在运行,则可以向该节点调度Pod,否则,该节点对象将被忽略,直到节点变为有效状态。
K8S将保留无效的节点对象,并不断地检查该节点是否有效。除非使用kubectl delete node my-first-k8s-node
节点控制器
节点控制器是一个负责管理节点的生命周期的K8S组件:
-
节点控制器在注册节点时为节点分配CIDR地址块
-
节点控制器检查节点列表中每一个节点对应的虚拟机是否可用。
-
节点控制器监控节点的健康状态,如果节点不可达(例如节点停机,节点无法再收到来自节点的心跳信号),节点控制器将节点对象的NodeStatus Conditon取值从NodeReady更新为Unknown,然后在等待
pod-eviciton-timeout
时间后,将节点上的所有Pod从节点驱逐(似乎最新版不是这样实现的,新版的Node描述中不存在pod-eviciton-timeout
)。- 默认40秒未收到心跳,修改NodeStatus Conditon为Unknown
- 默认
pod-eviciton-timeout
为5分钟 - 节点控制器每隔
--node-monitor-period
秒检查一次节点的状态