当前位置:   article > 正文

k8s驱逐策略

k8s驱逐策略

一:为什么要有驱逐
pod.spec.containers[].resources中会存在cpu或memory的request和limit。即该pod请求的最小资源和Node结点可以给的最大资源。
当一个容器的cpu使用率超过limit时会被进行流控,而当内存超过limit时则会被oom_kill。
完全依赖于oom_kill并不是一个很好的方案,一来对于cpu要求高的容器没有作用,二来单纯将pod杀死,并不能根本上解决困局,比如pod占用node绝大部分内存,假如pod被kill后再次调度到这个node上,oom的情况还会复现。所以kubelet增加了一套驱逐机制。
eviction中要设置触发驱逐的阈值Eviction Thresholds,这个阈值的配置可以是一个定值或一个百分比。如:
memory.available<10%
memory.available<1Gi

二:驱逐机制

Soft Eviction Thresholds
软驱逐机制表示,当node的内存/磁盘空间达到一定的阈值后,我要观察一段时间,如果改善到低于阈值就不进行驱逐,若这段时间一直高于阈值就进行驱逐。

Hard Eviction Thresholds
强制驱逐机制则简单的多,一旦达到阈值,立刻把pod从本地kill,

Pod eviction
当资源使用情况触发了驱逐条件时,kubelet会启动一个任务去轮流停止运行中的pod,直到资源使用状况恢复到阈值以下。以硬驱逐为例,整体流程是:

  • 每隔一段时间从cadvisor中获取资源使用情况,发现触发了阈值ÿ
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/128304
推荐阅读
相关标签
  

闽ICP备14008679号