k8s中有三个组件与node交互,分别是node controller,kubelet,kubectl
在node的整个生命周期中,node controller充当多个角色,
第一个:在node注册入集群的时候,给他分配一个CIDR地址快。
第二个是维护node controller 内部节点可用列表,如果node controller检测node不健康,他就会向供应商询问节点虚拟机是否可用,如果不可应就从列表剔除。
第三个是监控节点的健康状态,当node controller检测node不可达时,负责将node状态中的not ready condition 跟新到 condition unknown, 然后将node上所有的pod删除,(默认不可达超过40S就会标记成condition unkunown,此时并没有发生删除pod的操作,系统会尝试重新联系node,如果恢复就被标记为node ready. 如果不可达超过5分钟,就会采取删除pod的操作)
每隔多少秒去检测一次节点的状态是: --node-monitor-period
node controller 源码中,monitor node health 是定时更新node的信息:
- 获取所有的node信息,按照哪些是新增的,哪些是需要删除的,以及哪些是需要重新规划的返回节点相应的信