全部场景Scene 07

存储订单PVC Pending 与 RWO

PVC 长期 Pending,或多副本共用 RWO 后出现 Multi-Attach。你将从 StorageClass 与 PVC Events 找供应链证据,并给出 StatefulSet 或独立卷的处理方向。

高阶阶段 · 8 min · 5 步 · get sc/pvc · apply · describe

演练前检查

环境
本地实验集群;已了解默认 StorageClass 是否存在;仓库可访问 examples/storage/pvc.yaml。
初始故障
PVC 可能进入 Pending;这项演练允许动态供应缺失,不强求所有环境都得到 Bound。
成功标准
能解释 PVC Pending 时查 SC/provisioner;能说明单 RWO + 多副本 Deployment 的 Multi-Attach 风险
清理
核对 StorageClass reclaimPolicy 后执行 kubectl delete -f examples/storage/pvc.yaml。

场景判断

无状态优先;有状态才上卷。PVC 声明容量与访问模式,PV 是库存,StorageClass 让动态 provisioner 自动开卷。本地 kind 若未装 local-path-provisioner 等,apply 后 PVC 可能长期 Pending——这不是 YAML 写错,而是「货架上没有默认供应商」。

真实案例骨架:单副本库改成 Deployment replicas=3 并共用一块 RWO PVC——第二、三个 Pod 卡在 ContainerCreating/Pending,Events 写 Multi-Attach。订单(PVC data)只有一份货,有状态负载应评估 StatefulSet 或每副本独立卷,而不是假设共享一块盘就能水平扩展。

复现步骤

本机勾选备忘(localStorage),不代表你已在集群里跑过,也不连接任何 API。只是帮你对照步骤,别当成「学会了」的勋章。

— / 5本机勾选

  1. 01
  2. 02
  3. 03
  4. 04
  5. 05

关键配置

YAMLyaml
# examples/storage/pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  # storageClassName: standard  # 省略则用默认 SC
SHELLbash
# 盘点供应能力
kubectl get sc,pvc,pv

# 下单
kubectl apply -f examples/storage/pvc.yaml
kubectl get pvc data
kubectl describe pvc data

# 读访问模式(RWO ≠ 多副本共享)
kubectl explain persistentvolumeclaim.spec.accessModes

kubectl delete -f examples/storage/pvc.yaml

Bound 只证明订单配货成功——不证明你的三副本库都能安全共用同一块盘。

验收:能用订单/库存/货架类比 PVC/PV/SC;Pending 时第一条命令是 describe pvc 不是 delete;能向同事说明 Multi-Attach 风险。

现场记录

先写自己的证据,再看参考答案。输入只留在当前页面,本站不会读取或验证你的集群。

存储订单:PVC Pending 与 RWO

Evidence Receipt · 执行凭证

只填写你实际运行过的环境;stdout / Events 请脱敏后写入下方证据句。

这是你的手动确认,不代表本站已检测命令执行结果。

关联命令

跳转图鉴并展开对应条目(可复制示例)。

对应路径课节

Kubernetes 图鉴 · 场景剧本 · pvc-order