EndpointController更新endpoint

发布时间 2023-05-20 21:42:00作者: 王景迁

因kcm异常而没有更新endpoint

停止kube-controller-manager

删除Pod coredns后endpoint没有更新

kube-proxy没有更新svc kube-dns

恢复kcm后更新endpoint

启动kube-controller-manager后,去掉了异常coredns Pod IP

pkg/controller/endpoint/endpoints_controller.go
syncService函数
更新endpoints

kube-proxy去掉该Pod IP

节点宕机后更新endpoint

节点重启时间是19:35:07

NodeLifecycleController在19:35:46因kubelet 40s内没有上报心跳,把节点更新成了NotReady,把Pod coredns的状态更新成了NotReady。

NodeLifecycleController间隔5s检查最近40s内kubelet是否上报了心跳

pkg/controller/nodelifecycle/node_lifecycle_controller.go
Run函数
异步更新节点状态

pkg/controller/nodelifecycle/node_lifecycle_controller.go
tryUpdateNodeHealth函数

gracePeriod是40s

Pod状态更新后,监听Pod状态变化的EndpointController会更新endpoint

pkg/controller/endpoint/endpoints_controller.go
podChanged函数
Pod ready状态变化会触发EndpointController更新endpoint

19:35:46 kube-proxy完成摘流

kubelet默认间隔10s上报心跳