0
点赞
收藏
分享

微信扫一扫

Kubernetes controller-manager 常见参数解析


当 Kubernetes 中 Node 节点出现状态异常的情况下,节点上的 Pod 会被重新调度到其他节点上去,但是有的时候我们会发现节点 Down 掉以后,Pod 并不会立即触发重新调度,这实际上就是和 Kubelet 的状态更新机制密切相关的,Kubernetes 提供了一些参数配置来触发重新调度到嗯时间,下面我们来分析下 Kubelet 状态更新的基本流程。

  1. kubelet 自身会定期更新状态到 apiserver,通过参数​​--node-status-update-frequency​​指定上报频率,默认是 10s 上报一次。
  2. kube-controller-manager 会每隔​​--node-monitor-period​​时间去检查 kubelet 的状态,默认是 5s。
  3. 当 node 失联一段时间后,kubernetes 判定 node 为​​notready​​​ 状态,这段时长通过​​--node-monitor-grace-period​​参数配置,默认 40s。
  4. 当 node 失联一段时间后,kubernetes 判定 node 为​​unhealthy​​​ 状态,这段时长通过​​--node-startup-grace-period​​参数配置,默认 1m0s。
  5. 当 node 失联一段时间后,kubernetes 开始删除原 node 上的 pod,这段时长是通过​--pod-eviction-timeout​参数配置,默认 5m0s。

(1)--pod-eviction-timeout duration 默认值:5m0s

在失效的节点上删除 Pods 时为其预留的宽限期。

很多场景都需要多个控制器协同工作,比如某个节点宕机,kubelet 将会停止汇报状态到Node 对象。NodeLifecycle 控制器会发现节点状态没有按时更新,超过一段时间(可通过参数--pod-eviction-timeout 来指定)后,它将驱逐节点上的Pod

Kubernetes 的 controller manager 将尝试每​​--node-monitor-period​​​时间周期内检查​​nodeStatusUpdateRetry​​​次。在​​--node-monitor-grace-period​​​之后,会认为节点 unhealthy,然后会在​​--pod-eviction-timeout​​后删除 Pod。 

举报

相关推荐

0 条评论