Storage

Przestrzeń dyskowa dla usług uruchomionych w klastrze Oktawave Kubernetes Service

Obiekty PersistentVolume pozwalają na przypisywanie do podów trwałej pamięci blokowej (OVS).

StorageClass

Aby móc tworzyć PersistentVolume, najpierw potrzebna jest definicja StorageClass.

StorageClass definiuje konfigurację dla tworzonych dysków oraz sposób ich obsługi przez Kubernetesa. Domyślnie, każdy klaster OKS posiada StorageClass o nazwie default, która korzysta z dysków tier 1 i systemu plików ext4. Poniżej przykładowa definicja StorageClass dla tier2.

oks-storageclass.yaml
oks-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: tier2
provisioner: csi.oktawave.com
parameters:
tier: "2"
fsType: ext4
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

Powyższy przykład aplikujemy w klastrze przez wydanie polecenia:

$ kubectl apply -f oks-storageclass.yaml

Konfiguracja StorageClass

  • parameters

    • tier - Tier dysku od 1 do 5. Możliwe wartości: "1", "2", "3", "4", "5"

    • fsType - Filesystem dysku. Obecnie wspieramy systemy ext2, ext3 i ext4.

  • reclaimPolicy - Definiuje czy dysk jest usuwany po usunięciu PVC z nim powiązanego. Przyjmuje wartości: Delete - Dysk jest usuwany razem z PVC; Retain - Dysk jest zachowywany

  • volumeBindingMode - Definiuje kiedy dysk jest tworzony podczas zakładania PVC. WaitForFirstConsumer - Rekomendowane. Dysk jest tworzony w momencie przypięcia PVC do danego noda, co gwarantuje utworzenie go we właściwym subregionie. Immediate - dysk jest tworzony w losowym subregionie i może nie zadziałać w połączeniu z nodem z innego subregionu

Persistent Volume Claim

Persistent Volume Claim służy do przypisywania pamięci dostępnej dla Poda. PVC wymaga podania zdefiniowanej wcześniej klasy pamięci (StorageClass), która określa parametry podmontowywanego zasobu dyskowego.

We wcześniej zdefiniowanych podach MySQLa i Wordpressa podaliśmy nazwy PersistentVolumeClaim. Teraz je utworzymy następującymi plikami konfiguracyjnymi:

oks-mysql-pvc.yaml
oks-mysql-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: hello-mysql-pvc
labels:
app: hello-wordpress
spec:
storageClassName: tier1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
oks-wordpress-pvc.yaml
oks-wordpress-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: hello-wordpress-pvc
labels:
app: hello-wordpress
spec:
storageClassName: tier1
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi

Tworzymy PersistentVolumeClaims z tych plików komendami:

$ kubectl apply -f oks-mysql-pvc.yaml
$ kubectl apply -f oks-wordpress-pvc.yaml