# Storage

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

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