Microk8s Persistent Volumes

Permanenter Speicher

Bei jedem Deployment wird das Dateisystem des Pods gelöscht und neu erstellt.

Damit das Dateisystem erhalten bleibt, benötigen wir ein Persistent Volume sowie ein Persistent Volume Claim für den Pod

Storage Klasse (custom)

  1. apiVersion: storage.k8s.io/v1
  2. kind: StorageClass
  3. metadata:
  4. name: custom
  5. provisioner: kubernetes.io/no-provisioner
  6. volumeBindingMode: WaitForFirstConsumer

Persistent Volume

Ich brauche warum auch immer 2 Ingresses, einen für /ws2 und einen für /ws2/socket.io

Erstellt ein persistentes Volume von 5G auf dem lokalen Dateisystem.

  1. kind: PersistentVolume
  2. apiVersion: v1
  3. metadata:
  4. name: custom-default-backend
  5. labels:
  6. type: local
  7. spec:
  8. storageClassName: custom
  9. capacity:
  10. storage: 5Gi
  11. accessModes:
  12. - ReadWriteOnce
  13. hostPath:
  14. path: "/mnt/data/custom-default-backend"
  15. type: DirectoryOrCreate

Persistent Volume Claim

Stellt pro Claim (Anforderung) 1G für jeden Pod im Volume bereit

  1. apiVersion: v1
  2. kind: PersistentVolumeClaim
  3. metadata:
  4. name: custom-default-backend-pvc
  5. spec:
  6. accessModes:
  7. - ReadWriteOnce
  8. resources:
  9. requests:
  10. storage: 1Gi
  11. storageClassName: custom

Deployment Volume Mounts

Im Deployment kann wird festgelegt auf welche Pfade das persitente Volume gemountet wird.

Beispiel Deployment:

  1. volumeMounts:
  2. - name: nginx-configs
  3. mountPath: /etc/nginx/conf.d
  4. - name: docroot
  5. mountPath: /usr/share/nginx/html
  6. # Load the configuration files for nginx
  7. volumes:
  8. - name: nginx-configs
  9. configMap:
  10. name: nginx-config
  11. - name: docroot
  12. persistentVolumeClaim:
  13. claimName: custom-default-backend-pvc
  14. readOnly: false
  15.  
  16.