K8s:Pod驱逐及节点预留

K8s:Pod驱逐

驱逐:Evicted
驱逐原因:cpu、内存、磁盘不足。
驱逐顺序:配置优先级、声明好的。


1、驱逐方式
1、由节点上的kubelet进程主动终止pod、以回收节点上的内存。
2、导致OOM的进程、强制驱逐、直接kill进程、

2、配置
位置:配置到kubelet的文件中、配置在每个node节点上的kubelet文件里面。
###找出文件:  grep  inodesFree  /  -R
就是yaml文件(查看kubelet的services文件、里面有一个yaml文件的配置) 
###vim /var/lib/kubelet/config.yaml
3、驱逐优先级
###1、最不被驱逐:limits和requests一样为最不被驱逐。(声明和实际使用上限的资源是一样的、优先级最高)
 Guaranteed: #limits和request的值相等,等级最高、最后被驱逐
 resources:
 limits:
 cpu: 500m
 memory: 256Mi
 requests:
 cpu: 500m
 memory: 256Mi
###2、中间被驱逐
 Burstable: #limit和request不相等,等级折中、中间被驱逐
 resources:
 limits:
 cpu: 500m
 memory: 256Mi
 requests:
 cpu: 256m
 memory: 128Mi
###3、没有任何限制、最先被驱逐 
 BestEffort: #没有限制,即resources为空,等级最低、最先被驱逐

4、驱逐条件
硬驱逐
1、通过cgroup去捕捉获取内存和cpu的等值使用情况、进行下一步的匹配 
2、操作符:通过操作符的等职条件对比资源量、决定是否发生驱逐。
3、使用量:基于指定的资源使用值进行判断、内存CPU及磁盘 进行驱逐



软驱逐条件:
1、软驱逐触发条件。
2、定义时间周期去驱逐pod。
3、终止pod的宽限期。


总结:硬驱逐没有宽限期、达到值就驱逐
     软驱逐有宽限期。
5、kubelet配置
1、有些配置是加在yaml文件中(配置软驱逐和硬驱逐)

2、有些配置是写在services文件中

6、预留
作用:节点上预留一些空间出来、

如何预留:修改kubelet的service文件

添加下面行到kubelet的service文件
--system-reserved=cpu=200m,memory=500Mi,ephemeral-storage=1Gi
总结
什么情况下驱逐?
	1、node节点上的条件满足之后、就会开始驱逐pod(内存、cpu、磁盘)

驱逐原理 ?
	1、通过cgroup去捕捉获取内存和cpu的等值使用情况、进行下一步的匹配、然后开始驱逐

posted @ 2024-08-21 16:08  姬高波  阅读(83)  评论(0)    收藏  举报