
# 节点磁盘利用率高的问题排查
#### 问题现象
节点磁盘利用率高，执行**df -h**命令，输出中存在使用率超过90%的场景：
![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002322330121.png "点击放大")
#### 问题根因
以下原因均可能导致节点磁盘利用率偏高：
- 场景一：磁盘上存在大文件。
- 场景二：由于容器挂载hostPath或者emptyDir的，大量容器数据写入主机导致。
- 场景三：容器自身log日志打印，日志未设置保存天数，导致日志过大。
 
#### 解决方法
- 场景一：排查是否存在大文件
  使用**find** 命令来查找大文件。例如，要查找所有大于1GB的文件，可以使用以下命令：
  ```
  find / -type f -size +1G
  ```
  这个命令从根目录/开始查找所有大小超过 1GB 的文件（包括隐藏文件）。
  示例如下：
  - 查找当前文件夹下超过10k的文件 ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002322413561.png "点击放大")
    
  
  - 查找根目录下的超过100M的文件 ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002287821200.png "点击放大")
    
   
- 场景二：查询容器挂载路径 查询Pod挂载方式
  ```
  kubectl describe pods | grep -Pz  Volumes
  ```
  输出示例如下：
  ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002322747497.png "点击放大")
  如果容器挂载hostPath或者emptyDir，则需进一步排查挂载路径文件夹里的文件大小。
  
- 场景三：查询日志存储配置
  - docker：
    执行以下命令：
    ```
    cat /etc/docker/daemon.json
    ```
    输出示例：
    ```
    {
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      }
    }
    ```
    
  
  - containerd： 查看kubelet配置文件：
    ```
    cat /opt/cloud/cce/kubernetes/kubelet/kubelet_config.yaml
    ```
    输出示例：
    ```
    containerLogMaxSize: 50Mi
    containerLogMaxFiles: 20
    ```
    
   
 
#### 使用建议
1. 清理无用的文件。
   参考命令如下：
   - 列出当前目录下的所有文件
     ```
     ls -la
     ```
     
   
   - 删除无用的文件
     ```
     rm -f <file_name>
     ```
     
     
2. 对于需要写入大量数据的Pod，建议使用云存储。详情请参见[存储概述](https://support.huaweicloud.com/usermanual-cce/cce_10_0307.html#section1)。
3. docker、containerd的日志文件配置maxSize和maxFile。
   ![](https://support.huaweicloud.com/cce_faq/public_sys-resources/caution_3.0-zh-cn.png)
   更新配置需要重启docker服务或kubelet服务，请谨慎操作。
   containerd容器运行时的节点池
   1. 登录CCE控制台。
   
   2. 单击集群名称进入集群，在左侧选择"节点管理"，在右侧选择"节点池"页签。
   
   3. 单击节点池名称后的"配置管理"。
   
   4. 在侧边栏滑出的"配置管理"窗口中，在"kubelet组件配置"中找到**容器的日志文件个数上限（container-log-max-files）** 、**容器日志文件在轮换生成新文件时之前的最大值（container-log-max-size）**参数配置。
   
   5. 在参数输入框中输入新的数值。
      ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002322818617.png "点击放大")
      
      
   
   6. 保存配置。
    
   docker容器运行时的节点池
   1. 登录CCE控制台。
   
   2. 单击集群名称进入集群，在左侧选择"节点管理"，在右侧选择"节点池"页签。
   
   3. 单击节点池名称后的"配置管理"。
   
   4. 在侧边栏滑出的"配置管理"窗口中，在"容器运行时Docker配置"中找到**容器日志文件轮换生成新文件的最大值（max-size）** 、**容器的日志文件个数上限（max-file）**参数配置。
   
   5. 在参数输入框中输入新的数值。
      ![](https://support.huaweicloud.com/cce_faq/zh-cn_image_0000002288180418.png "点击放大")
      
      
   
   6. 保存配置。
     
4. 定期清理节点上没有使用的镜像。
   - 使用containerd容器运行时的节点：
     1. 查看节点上的本地镜像。
        ```
        crictl images -v
        ```
        
     
     2. 确认镜像无需使用，并通过镜像ID删除无需使用的镜像。
        ```
        crictl rmi {镜像ID}
        ```
        
      
   
   - 使用docker容器运行时的节点：
     1. 查看节点上的本地镜像。
        ```
        docker images
        ```
        
     
     2. 确认镜像无需使用，并通过镜像ID删除无需使用的镜像。
        ```
        docker rmi {镜像ID}
        ```
        
      
    
 
