模拟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
