emptyDir支持三种类型的,通过设置 medium
字段 :
文件:默认情况
Memory:占用内存资源
HugePages
sizeLimit默认行为
同时支持通过sizeLimit设置限制的大小,但是这个大小默认情况下(LocalStorageCapacityIsolation
特性默认开启)并不是强制限制的,而是由eviction manager 扫描到超过设定的大小之后,再将pod进行驱逐,所以存在一种情况就是文件其实已经超过了限定的大小(可能已经影响到了系统上其他服务),而驱逐是定时触发的,有一定的时间间隔。
我们希望能够达到强制的效果的话,就需要做一些hack。
通过xfs quota 限制
kubelet root-dir 使用xfs文件系统,并附上
project quota
属性,例如:/dev/vdb /data xfs noatime,prjquota 1 2
node上
xfs_quota
工具使用较新版本,需要支持-f
参数
其实在 k8s 1.15增加了一个特性 LocalStorageCapacityIsolationFSQuotaMonitoring
(PR:https://github.com/kubernetes/kubernetes/pull/66928) ,这个特性就是通过XFS quotas来给kubelet目录设置配额,但是这里仅仅只是监控消