节点指标异常,显示磁盘只读或磁盘资源不足,应该如何解决?
问题现象
该问题可能出现以下现象(一种或多种):
- 节点显示指标异常(显示磁盘只读或磁盘资源不足),并被kubelet打上污点导致节点受限调度。
- 在节点磁盘目录中,创建文件或目录失败。
- 挂载节点磁盘子目录的负载运行失败。
- 节点内已有的Pod被驱逐,且状态变为ContainerStatusUnknown。
问题根因
在 Linux 系统中,磁盘资源主要受两个维度限制:
- 物理磁盘空间:表示文件内容本身占用的存储空间。当节点的物理磁盘空间耗尽时,系统无法创建新文件或写入数据,可能导致节点异常。Kubernetes 会检测到磁盘压力,并为该节点打上污点,从而限制Pod调度,影响业务正常运行。
- inode节点:用于存储文件系统对象(包括文件、目录、设备文件、socket、管道等)的元信息数据,包含文件大小、权限、时间戳、数据块指针等信息,但不包括数据内容或者文件名。当节点目录下存在大量子目录或小文件时,可能导致inode耗尽,从而引发磁盘异常。
解决方法
- 登录异常节点,执行以下命令,检查磁盘的物理空间是否已满。
df -h
若对应的挂载点Used%为100%时,则说明物理空间已满,需要对其进行扩容,具体请参见存储扩容。否则,则说明物理空间仍有剩余。
回显如下,则表示物理空间仍有剩余。

- 当物理空间仍有剩余时,执行以下命令,检查系统可用的inode节点使用率。
df -i
回显结果如下:

当对应挂载点中的IUse%为100%时,则表示inode耗尽,可以删除不需要的文件释放inode。如果是/var/paas/everest/subpathvolumes目录下占用较多子目录,可以直接把该目录下的子目录全部删除,该目录下子目录为存储挂载时的临时目录,删除后不影响负载运行。