求助:将Kubernetes卷挂载到Ceph RBD存储时出现FailedMount错误
排查Kubernetes挂载Ceph RBD FailedMount问题
错误现象
挂载卷时触发FailedMount警告,具体报错:
Unable to attach or mount volumes: unmounted volumes=[data], unattached volumes=[data kube-api-access-mxlkm]: timed out waiting for the condition
排查与修复步骤
1. 修正StorageClass配置中的转义符问题
你的StorageClass配置里imageFormat: \"2\"存在多余转义符,会导致参数解析失败,修改为正确格式后重新创建:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: dynamic provisioner: kubernetes.io/rbd parameters: monitors: 192.168.122.82:6789,192.168.122.238:6789,192.168.122.124:6789 adminId: admin adminSecretName: ceph-admin-secret adminSecretNamespace: kube-system pool: k8s userId: kube userSecretName: ceph-user-secret imageFormat: "2"
2. 验证Ceph相关Secret的有效性
- 检查
kube-system命名空间下的管理员Secret:kubectl get secret ceph-admin-secret -n kube-system - 检查当前命名空间下的用户Secret:
kubectl get secret ceph-user-secret - 确保Secret中的值是Ceph用户key的base64编码,可通过以下命令获取原始key后编码:
# 获取admin用户key并编码 ceph auth get-key admin | base64 # 获取kube用户key并编码 ceph auth get-key client.kube | base64
3. 安装Worker节点的Ceph依赖
所有Worker节点(包括worker1)必须安装ceph-common包,否则无法识别RBD设备:
# Debian/Ubuntu系统 apt-get install -y ceph-common # RHEL/CentOS系统 yum install -y ceph-common
4. 验证Ceph集群连接与权限
- 在Worker节点测试Ceph集群连通性:
rbd --mon-host 192.168.122.82:6789,192.168.122.238:6789,192.168.122.124:6789 -p k8s ls - 检查Ceph用户权限:
确认输出中包含ceph auth get client.admin ceph auth get client.kubemon 'allow *'和osd 'allow rwx pool=k8s'类的权限规则。
5. 检查PV/PVC状态
查看PVC对应的PV是否成功绑定:
kubectl get pv,pvc
若PV未创建,检查kube-controller-manager日志,排查动态卷供给失败原因。
6. 查看Kubelet日志获取细节
在worker1节点查看kubelet实时日志,定位挂载失败的具体诱因:
journalctl -u kubelet -f
日志中通常会输出更具体的错误,比如集群连接失败、权限不足、设备丢失等信息。
内容的提问来源于stack exchange,提问作者dexter-cop
相关产品推荐
相关产品推荐

