当节点内存到达多少时。对节点的pod进行驱逐
[root@lecode-test-001 ~]# cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.6 --eviction-soft=memory.available<4G --eviction-soft-grace-period=memory.available=2m --eviction-max-pod-grace-period=180"
常见驱逐策略
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上启动。
配置在/var/lib/kubelet/kubeadm-flags.env
标签:驱逐,aliyuncs,--,pod,K8S,节点
From: https://www.cnblogs.com/anslinux/p/16850215.html