zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Kubernetes controller-manager 常见参数解析

Kubernetes 解析 参数 常见 Controller Manager
2023-09-14 09:15:17 时间

当 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。