kuberntes集成ceph rbd块的一次挂载失败的故障

1)概述

1)ceph版本:nautilus版
2)kuberntes集群环境:v1.14.2
3)集成方式:pod中的Volumes字段直接输入ceph rbd块相关的信息。相关yaml资源是来自kubernetes github的example。

2)现象

kubectl describe pod pod-rbd命令,发现rbd块已attach到目标节点,但是kubelet执行挂载动作的时候失败并输出报错: failed to mount unformatted volume as read only

3)pod的yaml资源

在这里插入图片描述
将kubernetes github example中的yaml文件进行修改:将monitors字段修改成我ceph集群的monitor实例。

4)疑惑

远程ceph集群中的rbd块已经attach到目标节点,kubelet在执行只读mount动作的时候失败(目标rbd块是没有文件系统的),为何mount之前不会对rbd块进行文件系统格式化,这一步为何被漏掉?我想象中的流程是:kubelet调用rbd命令将rbd块映射到目标节点,执行mkfs命令对rbd块进行指定一种文件系统进行格式化,最后一步是以只读方式mount这个rbd块。

5)kubelet执行挂载操作的源码

在这里插入图片描述

6)解决方式

将volume中的readOnly字段设置为false,此时kubelet在第一次挂载目标卷的时候会失败,于是尝试对没有文件系统的卷进行一次格式化,而后再执行一次挂载操作。

猜你喜欢

转载自blog.csdn.net/nangonghen/article/details/107057164