pod正常运行一段时间发现pod被驱逐了(启动了新的pod),原来的pod状态是error,有如下异常错误The node was low on resource: ephemeral-storage. Container m2m was using 201832260Ki, which exceeds its request of 0。出现的原因的node磁盘资源不足,导致pod被驱逐了。
pod被驱逐有好几种情况,上面是我遇到的。接下来罗列一下所有情况
memory.available
的值来自 cgroupfs,而不是像 free -m
这样的工具。 这很重要,因为 free -m
在容器中不起作用,如果用户使用 节点可分配资源 这一功能特性,资源不足的判定是基于 cgroup 层次结构中的用户 Pod 所处的局部及 cgroup 根节点作出的。
kubelet 支持以下文件系统分区:
-
nodefs
:节点的主要文件系统,用于本地磁盘卷、emptyDir、日志存储等。 例如,nodefs
包含 /var/lib/kubelet/
。 -
imagefs
:可选文件系统,供容器运行时存储容器镜像和容器可写层。
该配置存放路径以及示例:
[root@deng ~]# cat /etc/kubernetes/kubelet-customized-args.conf
KUBELET_CUSTOMIZED_ARGS=" --eviction-hard=imagefs.available<15%,memory.available<300Mi,nodefs.available<10%,nodefs.inodesFree<5% --system-reserved=cpu=50m,memory=1779Mi --kube-reserved=cpu=50m,memory=1779Mi --kube-reserved=pid=1000 --system-reserved=pid=1000 "
参阅文档:节点压力驱逐 | Kubernetes