因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上报心跳
标签:endpoint,EndpointController,更新,controller,Pod,kube From: https://www.cnblogs.com/WJQ2017/p/17417832.html