K8s Pod 驱逐调度时间窗口
Posted catoop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s Pod 驱逐调度时间窗口相关的知识,希望对你有一定的参考价值。
在 Kubernetes 中,当一个 Pod 所属的宿主机宕机后,这个 Pod 被驱逐并调度到其他节点上是需要一个时间窗口的,它不是立刻进行的(与 Pod 自己挂了不同,这里说的是节点服务器直接宕机的情况)。
首先,要清楚 K8s 中与节点状态、Pod状态的相关主要参数如下:
参数 | 说明 |
---|---|
--node-status-update-frequency | kubelet 定期上报频率,默认10s |
--node-monitor-period | 节点控制器定期检查 kubelet 状态,默认5s |
--node-monitor-grace-period | 节点失联指定时间后,将 Readey 变成为 NotReady 的时间窗口,默认40s |
--node-startup-grace-period | 节点失联指定时间后,判定为 Unhealthy 状态,默认1m (即 NotReady 后再过 20s 变为 Unhealthy ) |
--pod-eviction-timeout | 节点 NotReady 后,再过 --pod-eviction-timeout 时长后删除 Node 上的 Pod,默认300s |
所以,如果你对一个 Node 进行关机或断电操作,默认需要经过 5+40+300
秒后,这个 Node 上的 Pod 才会被驱逐并更新状态。
在 Node 状态为
NotReady
时,--pod-eviction-timeout
时长内 Pod 的状态是不发生变更的,本来是 Running 的话,这个期间就一直就是,当超过这个时长后会变成Nodelost
(DaemonSet) 或Unknown
(Deployment)。
调度过程解说:
- Master 每隔一段时间和 Node 联系一次,判定Node 是否失联,这个时间周期配置项为 node-monitor-period,默认5s
- 当 Node 失联后一段时间后,Kubernetes 判定 Node 为 NotReady 状态,这段时长的配置项为 node-monitor-grace-period,默认40s
- 当 Node 失联后一段时间后,Kubernetes 判定 Node 为 Unhealthy,这段时长的配置项为 node-startup-grace-period,默认1m0s
- 当 Node 状态为 NotReady 一段时间后,Kubernetes 开始删除原 Node 上的 Pod,这段时长配置项为 pod-eviction-timeout,默认5m0s
几组参考配置:
参数 | 快速更新和快速响应 | 中等更新和平均响应 | 低更新和慢响应 |
---|---|---|---|
-–node-status-update-frequency | 4s | 20s | 1m |
-–node-monitor-period | 2s | 5s | 5s |
-–node-monitor-grace-period | 20s | 2m | 5m |
-–pod-eviction-timeout | 30s | 1m | 1m |
注意不同的配置对Master和数据库的压力区别,按需配置。
最后再设置pods漂移时间
–default-not-ready-toleration-seconds
更多参数详见官网。
(END)
以上是关于K8s Pod 驱逐调度时间窗口的主要内容,如果未能解决你的问题,请参考以下文章