图片

在我们配置完毕namespace的存储数量、每个pod的限制、各方面都规范之后,我们真的可以高枕无忧了嘛?如果某天真的出现意外情况,k8s是怎么处理的呢?我们又该如何去配置呢?往下看。

图片

常见驱逐策略

1、软驱逐

# 当内存小于1.5G
--eviction-soft=memory.available<1.5Gi
# 持续时间
--eviction-soft-grace-period=memory.available=2m30s

上面的含义是说,当节点内存小于1.5G,并持续时间长达2分30秒的时候,进行驱逐。

2、硬驱逐

如果说只有软驱逐的话,会不会有这么一种情况,在小于1.5G的时候,并没有在持续2分30秒,内存就消耗殆尽了,那样子我们的整个节点都容易出现故障,更别说上面运行的服务了。

所以需要搭配一个最低值,一旦到达哪个阈值,直接进行驱逐。

# 内存小于100M
# 磁盘小于1G
# cpu空余小于5%
--eviction-hard=memory.available<100Mi,nodefs.available<1G,nodefs.inodesFree<5%

满足以上任一条件,则立刻开始驱逐。

磁盘紧缺的驱逐

当磁盘剩余空间触发到上面的驱逐策略的时候,是按照什么顺序进行驱逐的呢?

1、删除死掉的容器、POD
2、删除无用的镜像
3、按优先级、资源占用情况驱逐POD
# 如果优先级一致,就找到占用资源最大的进行驱逐

内存紧缺的驱逐

当内存剩余容量触发到上面的驱逐策略的时候,又是按照什么顺序进行驱逐的呢?

1、驱逐不可靠的pod
2、驱逐基本可靠的pod
3、直接停掉占用内存最大的pod
4、驱逐可靠的pod

PS:比如说当node1资源满了,然后把POD-A停掉了,这个时候node2还有足够的资源,是会将POD-A从node2上启动。

配置在哪儿

由于这个是kubelet控制的,且kubelet只有worker节点上存在,那么自然而然的要在worker节点上了,修改配置文件路径为下:

剩余内容请转至VX公众号 “运维家” ,回复 “141” 查看。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐