Skip to content

Czym są Storage Classes w Kubernetes?

Domyślnie, gdy chcemy uruchomić PV, które działa w oparciu o zasób dyskowy na Cloudzie (np. Google GCP) konieczne jest utworzenie zasobu dyskowego poprzez wydanie polecenia lub wyklikanie.

Następnie możliwe jest utworzenie już PV, przykładowy PV z użyciem Google Persistent Disk:

apiVersion: v1
kind: PersistentVolume
metadata:
    name: pv-gcp-01
spec:
    accessModes:
        - ReadWriteOnce
    capacity:
        storage: 1Gi
    gcePersistentDisk:
        pdName: pd-disk-01
        fsType: ext4

Aby zautomatyzować ten proces możemy utworzyć Storage Class. Jest to obiekt umożliwiający zautomatyzowane uruchamianie zasobów dyskowych zewnętrznych dostawców. Nie jest konieczne tworzenie PV przez administratora, utworzenie Storage Class automatycznie tworzy PV.

Konieczne jest utworzenie jedynie PVC i później zdefiniowanie tego w Podzie.

Storage Class mogą być przykładowo używane do rozdzielania zasobów pamięci masowej na klastrze - przykładowo zasób Brown, Silver, Gold, i określane konkretne zasoby w Cloud pod względem szybkości dysków, lub jako podział na inne regiony.

Definicja manifestu dla Storage Class

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
    name: <storage-class_name>
provisioner: <csi_provisioner_name>

Definicja PVC z użyciem Storage Class

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: <pvc_name>
spec:
    accessModes:
        - <access_mode_01>
    storageClassName: <storage-class_name> # LOOK AT THAT!!
    resources:
        requests:
            storage: 100Mi