《Kubernetes Rook-Ceph 运维手册 v1.0(生产版)》- 第七章:Rook-Ceph 生产故障案例库

针对生产 Kubernetes + Rook-Ceph 环境整理真实故障场景

目标:

  • 快速定位 Ceph 故障
  • 降低数据风险
  • 建立标准化恢复流程
  • 支撑 7×24 小时生产运维

7.1 故障处理总原则

7.1.1 Ceph故障处理流程

复制代码
                Ceph异常

                    |
                    v

             ceph -s检查

                    |
        +-----------+-----------+
        |                       |
     HEALTH_WARN           HEALTH_ERR

        |                       |
        v                       v

  查看health detail       查看组件状态


        |
        |
+-------+-------+-------+-------+
|       |       |       |       |
MON    MGR    OSD     PG     网络


        |
        v

确认影响范围

        |
        v

执行恢复操作

        |
        v

验证数据一致性

7.2 案例一:OSD全部Down导致Ceph不可用

7.2.1 故障现象

业务:

  • Kubernetes PVC无法挂载
  • Pod启动失败

查看:

复制代码
kubectl get pod -A

异常:

复制代码
MountVolume.SetUp failed

rbd image mount failed

Ceph:

复制代码
ceph -s

结果:

复制代码
HEALTH_ERR

osd: 0 up, 6 in

7.2.2 故障分析

查看OSD:

复制代码
ceph osd tree

结果:

复制代码
ID CLASS STATUS

0 hdd down
1 hdd down
2 hdd down

说明:

  • OSD进程全部异常
  • 数据盘可能正常
  • 可能原因:
    • 节点重启
    • 网络断开
    • 磁盘故障
    • ceph-volume异常

7.2.3 检查Rook OSD Pod

复制代码
kubectl -n rook-ceph get pod | grep osd

例如:

复制代码
rook-ceph-osd-0 CrashLoopBackOff

查看日志:

复制代码
kubectl -n rook-ceph logs \
rook-ceph-osd-0

7.2.4 恢复流程

第一步:确认节点

复制代码
kubectl get node

检查:

复制代码
ssh node01

systemctl status kubelet

第二步:检查磁盘

复制代码
lsblk

确认:

复制代码
/dev/sdb
/dev/sdc

第三步:重启OSD Pod

复制代码
kubectl -n rook-ceph delete pod \
rook-ceph-osd-0

Rook自动拉起:

复制代码
Running

第四步验证

复制代码
ceph -s

恢复:

复制代码
HEALTH_OK

osd: 6 up
pgs: active+clean

7.3 案例二:Ceph PG stuck inactive

故障现象

复制代码
ceph -s

显示:

复制代码
HEALTH_ERR

30 pgs stuck inactive

业务:

  • PVC卡住
  • IO阻塞

7.3.1 查看PG

复制代码
ceph pg stat

例如:

复制代码
30 pgs inactive

查看详情:

复制代码
ceph health detail

输出:

复制代码
pg 3.21 stuck inactive

7.3.2 定位OSD

复制代码
ceph pg map 3.21

输出:

复制代码
acting [1,5,8]

说明:

数据位于:

复制代码
osd.1
osd.5
osd.8

7.3.3 检查OSD

复制代码
ceph osd tree

发现:

复制代码
osd.5 down

恢复:

复制代码
kubectl delete pod \
rook-ceph-osd-5

7.3.4 强制恢复PG

如果长期卡住:

复制代码
ceph pg repair 3.21

检查:

复制代码
ceph -s

7.4 案例三:MON quorum丢失

故障现象

复制代码
ceph -s

错误:

复制代码
HEALTH_ERR

no quorum

7.4.1 查看MON

复制代码
ceph mon stat

例如:

复制代码
3 mons

quorum a,b

缺少:

复制代码
mon.c

7.4.2 Kubernetes检查

复制代码
kubectl -n rook-ceph get pod | grep mon

异常:

复制代码
rook-ceph-mon-c Pending

7.4.3 查看事件

复制代码
kubectl describe pod \
rook-ceph-mon-c

常见:

复制代码
FailedMount

或者:

复制代码
node unavailable

7.4.4 恢复

删除异常Pod:

复制代码
kubectl delete pod \
rook-ceph-mon-c

Rook重建

验证:

复制代码
ceph mon stat

正常:

复制代码
quorum a,b,c

7.5 案例四:磁盘空间100%导致Ceph异常

故障现象

复制代码
ceph -s

显示:

复制代码
HEALTH_ERR

nearfull osd

或者:

复制代码
full osd

7.5.1 查看容量

复制代码
ceph df

例如:

复制代码
85% USED

7.5.2 查看大对象

复制代码
rados df

7.5.3 Kubernetes定位

查看PVC:

复制代码
kubectl get pvc -A

寻找:

  • 大日志
  • 临时数据
  • 构建缓存

7.5.4 临时扩容阈值

查看:

复制代码
ceph osd dump | grep ratio

调整:

复制代码
ceph osd pool set-quota

或者:

增加OSD:

复制代码
kubectl label node node04 \
storage=true

7.6 案例五:Kubernetes节点宕机

故障现象

节点:

复制代码
Node NotReady

Ceph:

复制代码
ceph -s

显示:

复制代码
osd down

7.6.1 查看节点

复制代码
kubectl get node

7.6.2 查看OSD归属

复制代码
ceph osd tree

例如:

复制代码
host gpu-node01

osd.1
osd.2

7.6.3 恢复策略

节点短时间恢复

不要操作:

等待:

复制代码
ceph osd status

节点永久故障

执行:

复制代码
ceph osd out osd.1

等待:

复制代码
ceph -s

完成数据迁移


7.7 案例六:Rook Operator异常

故障现象

所有Ceph Pod异常:

复制代码
Pending

检查:

复制代码
kubectl -n rook-ceph get pod

发现:

复制代码
rook-ceph-operator CrashLoopBackOff

查看日志:

复制代码
kubectl logs \
-n rook-ceph \
deploy/rook-ceph-operator

恢复

重启Operator:

复制代码
kubectl rollout restart deployment \
rook-ceph-operator \
-n rook-ceph

验证:

复制代码
kubectl get pod -n rook-ceph

7.8 案例七:PVC无法创建

现象

复制代码
kubectl describe pvc test

错误:

复制代码
failed to provision volume

排查顺序

1. CSI

复制代码
kubectl get pod \
-n rook-ceph | grep csi

2. StorageClass

复制代码
kubectl get sc

检查:

复制代码
provisioner:
 rook-ceph.rbd.csi.ceph.com

3. Ceph Pool

复制代码
ceph osd pool ls

4. CSI日志

复制代码
kubectl logs \
-n rook-ceph \
deploy/csi-rbdplugin-provisioner

7.9 案例八:误删除OSD恢复

场景

管理员:

复制代码
ceph osd purge

误删除


处理

检查磁盘

复制代码
ceph-volume inventory

查看:

复制代码
ceph-volume lvm list

如果还能找到:

恢复:

复制代码
ceph-volume lvm activate

如果磁盘数据存在:

不要:

复制代码
wipefs

7.10 案例九:Ceph升级失败

场景

升级:

复制代码
Ceph Reef
        |
        X

查看:

复制代码
ceph versions

检查:

复制代码
kubectl -n rook-ceph get pod

恢复:

暂停升级:

复制代码
kubectl edit cephcluster

设置:

复制代码
skipUpgradeChecks: true

回滚:

恢复旧镜像:

复制代码
image:
 quay.io/ceph/ceph:v18

7.11 案例十:整套Ceph灾难恢复

场景

所有K8s节点丢失

磁盘仍存在


恢复顺序

第一阶段

恢复:

复制代码
Kubernetes
 |
Rook Operator
 |
CephCluster

第二阶段

恢复MON

检查:

复制代码
/var/lib/rook

第三阶段

恢复OSD

复制代码
ceph-volume lvm activate --all

第四阶段

验证:

复制代码
ceph -s

目标:

复制代码
HEALTH_OK
PG active+clean

7.12 生产事故应急命令清单

集群状态

复制代码
ceph -s
ceph health detail

OSD

复制代码
ceph osd tree
ceph osd stat

PG

复制代码
ceph pg stat
ceph pg dump

MON

复制代码
ceph mon stat

Rook

复制代码
kubectl -n rook-ceph get pod

CSI

复制代码
kubectl logs -n rook-ceph \
-l app=csi-rbdplugin

7.13 生产故障等级定义

等级 影响 响应
P0 数据不可访问 立即处理
P1 部分PVC异常 30分钟
P2 性能下降 4小时
P3 健康告警 计划处理
相关推荐
あ-5 小时前
Proxmox Ceph 集群故障排查手册
ceph
あ-6 小时前
《Kubernetes Rook-Ceph 运维手册 v1.0(生产版)》- 第八章:Rook-Ceph 性能优化与生产调优
ceph
RobinDevNotes4 天前
Palmier Pro:AI时代的Mac视频编辑器
人工智能·ceph·macos·ai·音视频·视频编辑·mcp
bgy666614 天前
Ceph 分布式存储完整实战指南:架构、部署与全场景运维
分布式·ceph·架构
SLD_Allen14 天前
Ceph配置RDMA和GPUDirect支持的具体技术方案
ceph·rdma·gpudirect
2401_8346369915 天前
Ceph 分布式存储从入门到精通:架构解析 + cephadm 部署 + 存储池管理
ceph
吾皇斯巴达19 天前
ceph index-less桶可以用radosgw-admin bucket rm吗
ceph
运维全栈笔记1 个月前
腾讯云 CVM 搭建 Ceph 集群部署笔记
笔记·ceph·腾讯云
刘某的Cloud1 个月前
ceph osd 导入导出 rbd volume 卷
linux·运维·ceph·volume