Storage

Storage dla usług uruchomionych w klastrze Oktawave Kubernetes Service

Usługa Persistent Volumes pozwala na przypisywanie do podów trwałej pamięci blokowej (OVS).

Storage Class

Aby móc tworzyć PersistentVolume i PersistentVolumeClaim, najpierw potrzebna jest definicja Storage Class.

Storage Class definiuje konfigurację dla tworzonych dysków oraz sposób ich obsługi przez Kubernetesa.

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

Konfigurujemy ją w klastrze komendą:

$ kubectl apply -f oks-storageclass.yaml

Konfiguracja Storage Class

  • parameters

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

    • fsType - Filesystem dysku: Dowolny filesystem wspierany przez mkfs

  • 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
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
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