🔖
Kubernetes(Docker for Mac)のローカル環境のデフォルトStorageClassについて
忘れないようにメモメモ。
Docker for MacでKubernetesを有効にすると、デフォルトのStorageClassとして、hostpathが割り当てられている。
$ kubectl get storageclass
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
hostpath (default) docker.io/hostpath Delete Immediate false 18s
以下のStatefulSetのときのように、storageClassNameを明示しないとデフォルトのStorageClassが割り当てられる。
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: test
spec:
---省略---
volumeClaimTemplates:
- metadata:
name: data
spec:
# storageClassName: "my-storage-class" -> ここを記載しないと、デフォルトのStorageClassが割り当てられる
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 5Gi
デフォルトのStorageClassとして、何が割り当てられていたか。
そう、先ほども申した通り、hostpathが割り当てられている。
確認してみよう。
上記ファイルの内容をアプライすると、PersistentVolumeClaimが作られる。
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
data-mysql-0 Bound pvc-44216ba4-a510-4147-9763-a9130c08fe06 5Gi RWO hostpath 2m32s
data-mysql-1 Bound pvc-0936520c-1917-45cc-8423-40b1324ef80b 5Gi RWO hostpath 82s
data-mysql-2 Bound pvc-2ce4ad69-7808-4f45-877d-a51d4a2d102f 5Gi RWO hostpath 52s
そして、hostpathと紐づいたPersistentVolumeが動的にプロビジョニングされている。
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-0936520c-1917-45cc-8423-40b1324ef80b 5Gi RWO Delete Bound default/data-mysql-1 hostpath 88s
pvc-2ce4ad69-7808-4f45-877d-a51d4a2d102f 5Gi RWO Delete Bound default/data-mysql-2 hostpath 58s
pvc-44216ba4-a510-4147-9763-a9130c08fe06 5Gi RWO Delete Bound default/data-mysql-0 hostpath 2m38s
Discussion