资源上报是kubelet的心跳机制,定时上报节点状态,默认是10s,时间可以设定
在kubelet创建的时候就已经创建了节点状态的收集方法
pkg/kubelet/kubelet.go里面NewMainKubelet方法
klet.setNodeStatusFuncs= klet.defaultNodeStatusFuncs()
具体的方法定义在 pkg/kubelet/kubelet_node_status.go
其中包括节点信息、节点OOD信息、内存磁盘压力状态、节点监控状态等。
以 setNodeDiskPressureCondition 为例,当发现有压力的时候,将status置为 true or false
在kubelet运行的时候,会按照间隔调用方法来上报node信息。
syncNodeStatus 调用 updateNodeStatus, 然后又调用 tryUpdateNodeStatus 来进行上报操作。而最终调用的是 setNodeStatus。
就是调用上面注册的那些方法,在状态变更后,会调用 PatchNodeStatus 使用 kl.heartbeatClient 把状态发给 APIServer。
网友评论