云容器引擎 CCE-工作负载异常:实例拉取镜像失败:排查项四:节点磁盘空间不足

时间:2023-12-04 12:02:07

排查项四:节点磁盘空间不足

当k8s事件中包含以下信息,表明节点上用于存储镜像的磁盘空间已满,会导致重新拉取镜像失败。您可以通过清理镜像或扩容磁盘解决该问题。

Failed create pod sandbox: rpc error: code = Unknown desc = failed to create a sandbox for pod "nginx-6dc48bf8b6-l8xrw": Error response from daemon: mkdir xxxxx: no space left on device

您可以执行以下命令,确认节点上存储镜像的磁盘空间:

lvs

方案一:清理镜像

您可以执行以下步骤清理未使用的镜像:
  • 使用containerd容器引擎的节点:
    1. 查看节点上的本地镜像。
      crictl images -v
    2. 确认镜像无需使用,并通过镜像ID删除无需使用的镜像。
      crictl rmi {镜像ID}
  • 使用docker容器引擎的节点:
    1. 查看节点上的本地镜像。
      docker images
    2. 确认镜像无需使用,并通过镜像ID删除无需使用的镜像。
      docker rmi {镜像ID}

请勿删除cce-pause等系统镜像,否则可能导致无法正常创建容器。

方案二:扩容磁盘

扩容磁盘的操作步骤如下:

  1. 在EVS界面扩容数据盘。
  2. 登录CCE控制台,进入集群,在左侧选择“节点管理”,单击节点后的“同步云服务器”
  3. 登录目标节点。
  4. 使用lsblk命令查看节点块设备信息。

    这里存在两种情况,根据容器存储Rootfs而不同。

    • Overlayfs,没有单独划分thinpool,在dockersys空间下统一存储镜像相关数据。
      # lsblk
      NAME                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      vda                   8:0    0   50G  0 disk 
      └─vda1                8:1    0   50G  0 part /
      vdb                   8:16   0  200G  0 disk 
      ├─vgpaas-dockersys  253:0    0   90G  0 lvm  /var/lib/docker               # 容器引擎使用的空间
      └─vgpaas-kubernetes 253:1    0   10G  0 lvm  /mnt/paas/kubernetes/kubelet  # kubernetes使用的空间

      在节点上执行如下命令, 将新增的磁盘容量加到dockersys盘上。

      pvresize /dev/vdb 
      lvextend -l+100%FREE -n vgpaas/dockersys
      resize2fs /dev/vgpaas/dockersys
    • Devicemapper,单独划分了thinpool存储镜像相关数据。
      # lsblk
      NAME                                MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      vda                                   8:0    0   50G  0 disk 
      └─vda1                                8:1    0   50G  0 part /
      vdb                                   8:16   0  200G  0 disk 
      ├─vgpaas-dockersys                  253:0    0   18G  0 lvm  /var/lib/docker    
      ├─vgpaas-thinpool_tmeta             253:1    0    3G  0 lvm                   
      │ └─vgpaas-thinpool                 253:3    0   67G  0 lvm                   # thinpool空间
      │   ...
      ├─vgpaas-thinpool_tdata             253:2    0   67G  0 lvm  
      │ └─vgpaas-thinpool                 253:3    0   67G  0 lvm  
      │   ...
      └─vgpaas-kubernetes                 253:4    0   10G  0 lvm  /mnt/paas/kubernetes/kubelet
      • 在节点上执行如下命令, 将新增的磁盘容量加到thinpool盘上。
        pvresize /dev/vdb 
        lvextend -l+100%FREE -n vgpaas/thinpool
      • 在节点上执行如下命令, 将新增的磁盘容量加到dockersys盘上。
        pvresize /dev/vdb 
        lvextend -l+100%FREE -n vgpaas/dockersys
        resize2fs /dev/vgpaas/dockersys

support.huaweicloud.com/cce_faq/cce_faq_00015.html