← スキル一覧に戻る

debugging-k8s-storage
by rio
⭐ 33🍴 9📅 2026年1月23日
SKILL.md
name: debugging-k8s-storage description: Debugs Kubernetes storage issues including PVC stuck in Pending, PV binding failures, volume mount errors, and StorageClass problems. Use when volumes fail to mount, PVCs not binding, or storage-related pod failures. allowed-tools: Bash
Debugging Kubernetes Storage
Investigates PersistentVolumeClaim, PersistentVolume, and mount issues.
Common Storage Issues
| Symptom | Likely Cause | First Check |
|---|---|---|
| PVC Pending | No matching PV, StorageClass issue | PVC events |
| Mount failed | PV not available, node issue | Pod events |
| Multi-attach error | RWO volume on multiple nodes | Access mode |
| Permission denied | fsGroup/runAsUser mismatch | Security context |
Investigation Workflow
Step 1: Check PVC Status
# List PVCs
kubectl get pvc -n <ns>
# Detailed PVC info
kubectl describe pvc <pvc> -n <ns>
PVC Pending? Check Events section for reason.
Step 2: Check PV Binding
# List PVs
kubectl get pv
# Check PV details
kubectl describe pv <pv-name>
PVC binds to PV when:
- StorageClass matches (or empty for static)
- Access modes compatible
- Capacity sufficient
Step 3: Check StorageClass
# List StorageClasses
kubectl get storageclass
# Check default StorageClass
kubectl get storageclass -o jsonpath='{range .items[?(@.metadata.annotations.storageclass\.kubernetes\.io/is-default-class=="true")]}{.metadata.name}{end}'
# StorageClass details
kubectl describe storageclass <name>
Step 4: Check Pod Mount Events
# Pod events show mount failures
kubectl describe pod <pod> -n <ns> | grep -A10 "Events:"
# Events for PVC
kubectl get events -n <ns> --field-selector involvedObject.name=<pvc>
Specific Issues
PVC Stuck in Pending
Common reasons:
- No matching PV (static provisioning)
- StorageClass can't provision (dynamic provisioning)
- Capacity not available
- Wrong access mode
# Check what the PVC is requesting
kubectl get pvc <pvc> -n <ns> -o yaml | grep -A5 "spec:"
# Check events for provisioning errors
kubectl describe pvc <pvc> -n <ns> | grep -A10 "Events:"
Multi-Attach Error
# Check access mode (RWO = ReadWriteOnce = single node)
kubectl get pvc <pvc> -n <ns> -o jsonpath='{.spec.accessModes}'
# Check which node has the volume
kubectl get pod -n <ns> -o wide
RWO volumes can only attach to one node. If pods are on different nodes, one will fail.
Options:
- Use ReadWriteMany (RWX) if storage supports it
- Ensure pods schedule to same node
Volume Mount Timeout
# Check node where pod is scheduled
kubectl get pod <pod> -n <ns> -o jsonpath='{.spec.nodeName}'
# Check node conditions
kubectl describe node <node> | grep -A5 "Conditions:"
May indicate:
- Cloud provider API issues
- Node can't reach storage backend
- CSI driver problems
Permission Denied on Volume
# Check pod security context
kubectl get pod <pod> -n <ns> -o jsonpath='{.spec.securityContext}'
# Check container security context
kubectl get pod <pod> -n <ns> -o jsonpath='{.spec.containers[*].securityContext}'
Fix with fsGroup or runAsUser in pod spec.
Quick Debug Commands
# Overview of all PVC/PV
kubectl get pvc,pv -A
# Check CSI drivers (if using CSI)
kubectl get csidrivers
# Storage-related events
kubectl get events -A --field-selector reason=FailedMount
kubectl get events -A --field-selector reason=FailedAttachVolume
Access Modes Reference
| Mode | Short | Description |
|---|---|---|
| ReadWriteOnce | RWO | Single node read-write |
| ReadOnlyMany | ROX | Multiple nodes read-only |
| ReadWriteMany | RWX | Multiple nodes read-write |
| ReadWriteOncePod | RWOP | Single pod read-write |
Notes
- Load
debugging-k8s-podsif pod has other issues besides storage - Load
analyzing-k8s-eventsfor storage event timeline
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です