容器异常退出
# The node was low on resource: ephemeral-storage. Container kube-proxy was using 12Ki, which exceeds
启动kubernetes时候,发现kube-proxy无法启动,状态是Evicted。查看详情是:
The node was low on resource: ephemeral-storage. Container kube-proxy was using 12Ki, which exceeds its request of 0。
用df -h查看磁盘的使用空间,发现根目录占用85%,删除了一些后,发现可以正常启动了。
原因可能是根目录的磁盘空间不足,删除部分空间即可。
原因分析
磁盘使用空间高于85%后,集群会在该节点打上污点
node.kubernetes.io/disk-pressure:NoSchedule
,并触发k8s节点驱逐pod策略,pod被驱逐后,当前节点pod处于停止状态,同时image处于未使用状态,因此删除image,导致image被删除。参考如下
- 驱逐Node级别资源
- 配置了 imagefs 阈值时
- 达到 nodefs 阈值:删除已停止的 Pod
- 达到 imagefs 阈值:删除未使用的镜像
- 未配置 imagefs 阈值时
- 达到 nodefs阈值时,按照删除已停止的 Pod 和删除未使用镜像的顺序清理资源
- 配置了 imagefs 阈值时
- 驱逐用户 Pod
- 驱逐顺序为:BestEffort、Burstable、Guaranteed
- 配置了 imagefs 阈值时
- 达到 nodefs 阈值,基于 nodefs 用量驱逐(local volume + logs)
- 达到 imagefs 阈值,基于 imagefs 用量驱逐(容器可写层)
- 未配置 imagefs 阈值时
- 达到 nodefs阈值时,按照总磁盘使用驱逐(local volume + logs + 容器可写层)
image-gc-high-threshold
:磁盘使用率上限,有效范围[0-100],默认85
image-gc-low-threshold
:磁盘使用率下限,有效范围[0-100],默认80
minimum-image-ttl-duration
:镜像最短应该生存的年龄,默认为2
分钟