模拟pvc
故障问题
查看正常状态下pv
以及pvc
kubectl get pvc -n ns-xmrkcipnc -l app.kubernetes.io/part-of=redis-failover
kubectl get pv|grep ns-xmrkcipnc|grep redis
模拟pvc
故障意外
kubectl delete pvc -n ns-xmrkcipnc -l app.kubernetes.io/part-of=redis-failover
kubectl get pvc -n ns-xmrkcipnc -l app.kubernetes.io/part-of=redis-failover
pvc
故障恢复流程
⚠️有条件下请备份再操作,注意步骤
前言
申请并等待可以操作的窗口期,否则操作期间会导致业务异常以及部分数据丢失
注意事项
- 下面实施操作命令会根据条件有所变化,务必理解对应逻辑再操作避免出现数据丢失问题
实施操作
修改pv
状态(批量修改)
# 修改pv状态(注意查询的实体比对)
for pv in `kubectl get pvc -n ns-xmrkcipnc -l app.kubernetes.io/part-of=redis-failover|grep Terminating|awk '{print $3}'`;do kubectl patch pv $pv -p '{"spec":{"claimRef":{"uid":""}}}';done
修改pv
状态(单个修改)
kubectl edit pv pvc-342ccb9b-bc9f-4169-ac68-eca4a4193550
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 819Mi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: data-redis-4x5yzix0a-2
namespace: ns-xmrkcipnc
resourceVersion: "16118531"
uid: ed581331-c029-4bd5-a62d-c41913b06bc8 # 删除改行
查看pv
状态
# 查看pv状态
kubectl get pv `kubectl get pvc -n ns-xmrkcipnc -l app.kubernetes.io/part-of=redis-failover|grep Terminating|awk '{print $3}'`
Pod停止
略
系统查看redis
组件状态0/0
为停止成功
# kubectl get sts -n ns-xmrkcipnc redis-4x5yzix0a
NAME READY AGE
redis-4x5yzix0a 0/0 46m
pod启动
略
### 查看组件恢复是否正常
kubectl get sts -n ns-xmrkcipnc redis-4x5yzix0a
- 恢复结果检查
检查恢复是否成功,pv
以及pvc
状态是否正常
查看pod
状态
# kubectl get pod -n ns-xmrkcipnc -l app.kubernetes.io/part-of=redis-failover
查看pvc
状态
# kubectl get pvc -n ns-xmrkcipnc -l app.kubernetes.io/part-of=redis-failover
查看pv
状态
kubectl get pv|grep ns-xmrkcipnc|grep redis