K8s Pod 驱逐调度时间窗口

Posted catoop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8s Pod 驱逐调度时间窗口相关的知识,希望对你有一定的参考价值。

在 Kubernetes 中,当一个 Pod 所属的宿主机宕机后,这个 Pod 被驱逐并调度到其他节点上是需要一个时间窗口的,它不是立刻进行的(与 Pod 自己挂了不同,这里说的是节点服务器直接宕机的情况)。

首先,要清楚 K8s 中与节点状态、Pod状态的相关主要参数如下:

参数说明
--node-status-update-frequencykubelet 定期上报频率,默认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)。

调度过程解说:

  1. Master 每隔一段时间和 Node 联系一次,判定Node 是否失联,这个时间周期配置项为 node-monitor-period,默认5s
  2. 当 Node 失联后一段时间后,Kubernetes 判定 Node 为 NotReady 状态,这段时长的配置项为 node-monitor-grace-period,默认40s
  3. 当 Node 失联后一段时间后,Kubernetes 判定 Node 为 Unhealthy,这段时长的配置项为 node-startup-grace-period,默认1m0s
  4. 当 Node 状态为 NotReady 一段时间后,Kubernetes 开始删除原 Node 上的 Pod,这段时长配置项为 pod-eviction-timeout,默认5m0s

几组参考配置:

参数快速更新和快速响应中等更新和平均响应低更新和慢响应
-–node-status-update-frequency4s20s1m
-–node-monitor-period2s5s5s
-–node-monitor-grace-period20s2m5m
-–pod-eviction-timeout30s1m1m

注意不同的配置对Master和数据库的压力区别,按需配置。

最后再设置pods漂移时间

–default-not-ready-toleration-seconds

更多参数详见官网


(END)

以上是关于K8s Pod 驱逐调度时间窗口的主要内容,如果未能解决你的问题,请参考以下文章

[K8s]Kubernetes-调度抢占驱逐

十四. k8s资源需求和限制, 以及pod驱逐策略

k8s资源需求和限制, 以及pod驱逐策略

k8s资源需求和限制, 以及pod驱逐策略

k8s 实践经验pod 详解

pod 调度详解:亲和污点和容忍