kubernetes使用ceph-csi 报rbd: map failed问题的处理

最近在新搭建了一个新版的kubernetes集群,在按照ceph官方文档,创建测试pod时,报rbd: map failed: (6) No such device or address的错误。

decribe pod 详细错误信息:
kubernetes使用ceph-csi 报rbd: map failed问题的处理

按照提示,在pod所在节点上执行命令dmesg|tail,发现一推unsupported features的报错

[421074.405749] rbd: image csi-vol-ecd8560b-bf38-11ea-a64d-ba01d38dd6c8: image uses unsupported features: 0x38
[421198.154065] libceph: mon2 192.168.12.83:6789 session established
[421198.154525] libceph: client18293 fsid 95e0a109-4d16-4625-8d79-62b09b42b282

应该创建的image有问题。然后去ceph mon节点上查看rdb image信息

查看image信息
rbd info  pool_name/image_name
rbd info kubernetes/csi-vol-ecd8560b-bf38-11ea-a64d-ba01d38dd6c8

kubernetes使用ceph-csi 报rbd: map failed问题的处理

一开始怀疑是内核版本问题,导致有些特性不支持。经过查询官方文档发现3.10之后除了fancy striping,其他特性都是支持的。而且通过手动map,也能映射成功。所以应该跟系统和ceph集群没有关系。

然后又在ceph-csi的文档里发现,目前ceph-csi目前只支持layering特性,所以需要在创建StorageClass时必须要添加参数imageFeatures,设置值为:layering 。但ceph的官方文档里没有说明这一点。
修正后的StorageClass:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
   name: csi-rbd-sc
provisioner: rbd.csi.ceph.com
parameters:
   clusterID: b9127830-b0cc-4e34-aa47-9d1a2e9949a8
   pool: kubernetes
   imageFeatures: layering
   csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret
   csi.storage.k8s.io/provisioner-secret-namespace: default
   csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret
   csi.storage.k8s.io/node-stage-secret-namespace: default
reclaimPolicy: Delete
mountOptions:
   - discard

storageclass一经创建,parameters是不允许更改的,所以只能删除然后重新创建,这个操作不会影响已经创建的pvc。

重新创建storageclass后,pod就能成功挂载rbd设备了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值