【发布时间】:2020-07-12 21:35:43
【问题描述】:
我有一个 k8s 集群,在我们的集群中,我们不希望 pod 被驱逐,因为 pod 驱逐会对运行在其上的应用程序造成很多副作用。
为了防止 pod 驱逐发生,我们已将所有 pod 配置为 Guaranteed QoS。我知道即使这样,如果系统中存在任何资源匮乏,也会发生 pod 驱逐。当 pod 和节点内出现资源不足时,我们有监视器来提醒我们。所以我们在一个 pod 被驱逐之前就知道了。这有助于我们在 pod 被驱逐之前采取措施。
发生 pod eviction 的其他原因是如果节点处于 not-ready 状态,那么 kube-controller-manager 将检查 pod-eviction-timeout 并在此超时后驱逐 pod。当节点进入未就绪状态时,我们有监视器来提醒我们。现在在此警报之后,我们想采取一些措施从应用程序端进行清理,因此应用程序将优雅地结束。要进行此清理,我们需要几个小时以上,但 pod-eviction-timeout 默认为 5 分钟。
将 pod eviction timeout 增加到 300m 可以吗?将此超时增加到这样的限制有什么影响?
P.S:我知道在这段等待时间内,如果 pod 使用了更多的资源,那么 kubelet 可以自己驱逐这个 pod。我想知道等这么久还有什么影响?
【问题讨论】:
-
为什么不将驱逐阈值设置为您的实际组织容忍度?正如您所说,系统仅在实际负载高峰时激活以保护自己,这意味着您的资源限制不正确。
-
我只是想了解更长的驱逐阈值是否有任何影响。我找不到任何有关使用 pod-eviction-threshold 的最佳实践的文档。这就是为什么我不得不在这个论坛上提出这个问题。
标签: kubernetes kubernetes-pod kubelet kube-controller-manager