事象
事前にPVを用意しているにもかかわらず
$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE test-pv 1Gi RWO Retain Available slow Xm
そのPVに紐づけようとしたPVCがPendingになる。
$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc Pending slow XX
詳細を確認するとstorageclass.storage.k8s.io "slow" not foundというエラーになっている。
$ kubectl describe pvc test-pvc ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 7s (x5 over 54s) persistentvolume-controller storageclass.storage.k8s.io "slow" not found
環境情報
- kubectl v1.18
原因
PVC側でPVの容量以上を要求している。
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: name: test-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 3Gi storageClassName: slow
上の例は3Gi。これをtest-pvに合わせて1Giとしてdelete&applyを行うと正常にバインドされている。
$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc Bound test-pv 1Gi RWO slow Xs
$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE test-pv 1Gi RWO Retain Bound test-pvc slow Xm
以下、補足です。
補足
以下の記事は同じくストレージ周りのエラーでしたが
この事象はPVCとPVの紐づけに失敗しているエラーです。
PV自体は正常に起動しておりストレージクラスも定義しているので
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:..
name: test-pv
...
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 1Gi
hostPath:
path: /data/pv
type: ""
persistentVolumeReclaimPolicy: Retain
storageClassName: slow
volumeMode: Filesystem
status:
phase: AvailablePVCとバインドするはずがエラーとなりました。
storageclass not foundというメッセージはありますが、実際はstarage class以外の箇所で不整合が起きていることがあるのその点をシェアしておきます。
以上、ご参考になれば幸いです。