zoukankan      html  css  js  c++  java
  • 解决k8s集群中mount volume失败的问题

    有的时候,k8s中挂载了rbd存储的pod重启后会持续处于ContainerCreating的状态,describe后发现有MountVolume.Setup failed以及Unable to mount volumes for pod xxx的错误描述。

    这种情况看上去是rbd设备挂载到pod上失败,但真实原因往往是pod迁移后,在原节点上map的rbd设备没有正常迁移走导致的。

    这个时候应该执行的是手动从原节点上unmap掉这个rbd设备。

    一、找到rbd设备map的节点

    通过kubectl get pvc找到这个pvc所绑定的pv。

    然后根据这个pv,在集群中每个节点上依次执行:

    rbd showmapped | grep [pv]

    找到这个pv所map的节点和rbd设备。(节点多的话需要通过脚本)

    二、查看挂载点

    看一下这个rbd设备有没有挂载点(应该是没有)。

    执行:

    findmnt -n [rbd设备]

    如果没有输出表明没有挂载点。如果输出类似/var/lib/kubelet/plugins/kubernetes.io/rbd/*,表明挂载点有误,需要手动删除挂载点。

    执行:

    umount [挂载点]

    三、手动unmap

    确保没有挂载点之后,执行

    rbd unmap [rbd设备]

    手动将这个rbd设备unmap掉。

    过一段时间后,新的rbd设备会自动挂载到新节点上,并为新pod所使用。

    四、问题排查

    如果在执行rbd unmap的时候,出现:

    rbd: sysfs write failed
    rbd: unmap failed: (16) Device or resource busy
    

    这样的报错信息,可以参考下面这篇文章的思路进行排查:

    https://cloud.tencent.com/developer/article/1469532?from=information.detail.rbd:%20unmap%20failed:%20(16)%20device%20or%20resource%20busy

  • 相关阅读:
    [ext4]空间管理
    [ext4] 磁盘布局
    [ext4]磁盘布局
    [ext4]08 磁盘布局
    [ext4]07 磁盘布局
    [ext4]06 磁盘布局
    [ext4]05 磁盘布局
    jQuery之链式编程
    jQuery之排他思想
    jQuery之筛选方法
  • 原文地址:https://www.cnblogs.com/00986014w/p/13683909.html
Copyright © 2011-2022 走看看