Winkelwagen

/ .nl-domeinnaam

Jouw .nl voor slechts € 0,49.

Domeinnaam checken
E-mail

/ Hostingpakket keuzehulp

Weet je niet zeker welk hostingpakket de beste
keus is voor jouw website? Met onze keuzehulp
kom je er wel uit.

Direct naar de keuzehulp

/ OpenStack

/ Probeer Public Cloud uit

Gratis 1 maand aan de slag met Public Cloud?

Vraag proefperiode aan

/ TransIP Blog

CSM25: API security in een SaaS-wereld

Lees de blogpost
Hulp nodig?

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    VolumeSnapshots gebruiken in Kubernetes

    Met VolumeSnapshots maak je een momentopname van een PersistentVolumeClaim (PVC) in je Kubernetes-cluster. Zo leg je de inhoud van een volume vast op een specifiek moment, bijvoorbeeld voordat je een applicatie-upgrade uitvoert of voordat je data wijzigt.

    In deze handleiding leggen we uit wanneer je VolumeSnapshots gebruikt, wat de kosten zijn, hoe je een snapshot maakt en hoe je een snapshot herstelt naar een nieuwe PersistentVolumeClaim.

    • VolumeSnapshots zijn beschikbaar voor volumes die via de TransIP CSI-driver worden aangemaakt, zoals volumes met StorageClass transip-fast-storage of transip-big-storage.
    • Een restore overschrijft je bestaande volume niet. Kubernetes maakt een nieuwe PersistentVolumeClaim met de data uit de snapshot.
    • VolumeSnapshots zijn handig als herstelpunt binnen je cluster, maar vervangen geen externe back-upstrategie voor disaster recovery.
    • De prijs is €0,06 per 10 GB per maand. Een snapshot van 100 GB kost daarmee €0,60 per maand.
     

     

    Voor je begint

     

    Voor deze handleiding heb je het volgende nodig:

    • Een Kubernetes-cluster met een bestaande PersistentVolumeClaim.
    • kubectl met toegang tot je cluster.
    • Een volume dat is aangemaakt met de TransIP CSI-driver. Gebruik hiervoor bijvoorbeeld de StorageClass transip-fast-storage of transip-big-storage.

    Controleer eerst of VolumeSnapshots beschikbaar zijn in je cluster:

    kubectl api-resources | grep -i volumesnapshot

    Controleer daarna welke VolumeSnapshotClass beschikbaar is:

    kubectl get volumesnapshotclass

    In een TransIP Kubernetes-cluster gebruik je de VolumeSnapshotClass team-blue-k8s. Deze class gebruikt de driver bs.csi.transip.nl.

    Controleer tot slot de PersistentVolumeClaim waarvan je een snapshot wilt maken:

    kubectl get pvc -n <namespace>

    Vervang <namespace> door de namespace waarin je PVC staat.


     

    Een VolumeSnapshot maken

     

    In dit voorbeeld maken we een snapshot van een PVC met de naam webdata in de namespace productie. Vervang deze namen door de namen uit jouw cluster.

     

    Stap 1

    Maak een bestand met de naam volume-snapshot.yaml:

    nano volume-snapshot.yaml

    Plaats de volgende inhoud in het bestand:

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: webdata-before-upgrade
      namespace: productie
    spec:
      volumeSnapshotClassName: team-blue-k8s
      source:
        persistentVolumeClaimName: webdata

    Vervang de volgende waarden:

    • webdata-before-upgrade: de naam van de snapshot.
    • productie: de namespace waarin je PVC staat.
    • webdata: de naam van de PVC waarvan je een snapshot maakt.

    Sla de wijzigingen op en sluit het bestand (ctrl + x > y > enter).


     

    Stap 2

    Maak de VolumeSnapshot aan:

    kubectl apply -f volume-snapshot.yaml

     

    Stap 3

    Controleer of de snapshot klaar is voor gebruik:

    kubectl get volumesnapshot -n productie

    Wacht tot READYTOUSE op true staat. Gebruik hiervoor eventueel dit commando:

    kubectl wait --for=jsonpath='{.status.readyToUse}'=true volumesnapshot/webdata-before-upgrade -n productie --timeout=10m

    Bekijk extra details met:

    kubectl describe volumesnapshot webdata-before-upgrade -n productie

     

    Een VolumeSnapshot herstellen

     

    Een restore vanuit een VolumeSnapshot maakt een nieuwe PersistentVolumeClaim. Kubernetes overschrijft de oorspronkelijke PVC niet. Koppel je applicatie pas aan de herstelde PVC nadat je hebt gecontroleerd dat de data klopt.

    Stap 1

    Controleer welke StorageClass de oorspronkelijke PVC gebruikt:

    kubectl get pvc webdata -n productie -o jsonpath='{.spec.storageClassName}{"\n"}'

    Gebruik bij de restore dezelfde StorageClass, bijvoorbeeld transip-fast-storage of transip-big-storage.


     

    Stap 2

    Maak een bestand met de naam volume-snapshot-restore.yaml:

    nano volume-snapshot-restore.yaml

    Plaats de volgende inhoud in het bestand:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: webdata-restore
      namespace: productie
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: transip-fast-storage
      resources:
        requests:
          storage: 20Gi
      dataSource:
        name: webdata-before-upgrade
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io

    Vervang de volgende waarden:

    • webdata-restore: de naam van de nieuwe PVC.
    • productie: de namespace waarin de snapshot staat.
    • transip-fast-storage: de StorageClass van de nieuwe PVC.
    • 20Gi: de grootte van de nieuwe PVC. Gebruik minimaal de restoreSize van de snapshot.
    • webdata-before-upgrade: de naam van de VolumeSnapshot.

    Sla de wijzigingen op en sluit het bestand (ctrl + x > y > enter).


     

    Stap 3

    Maak de herstelde PVC aan:

    kubectl apply -f volume-snapshot-restore.yaml

    Controleer of de PVC is aangemaakt:

    kubectl get pvc webdata-restore -n productie

    Wacht tot STATUS op Bound staat.


     

    Stap 4

    Controleer de data op de herstelde PVC voordat je je productie-workload aanpast. Maak hiervoor bijvoorbeeld een tijdelijke pod:

    apiVersion: v1
    kind: Pod
    metadata:
      name: check-restored-volume
      namespace: productie
    spec:
      restartPolicy: Never
      containers:
        - name: shell
          image: busybox:1.36
          command: ["sh", "-c", "ls -la /data && sleep 3600"]
          volumeMounts:
            - name: data
              mountPath: /data
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: webdata-restore

    Sla dit bestand bijvoorbeeld op als check-restored-volume.yaml en maak de pod aan:

    kubectl apply -f check-restored-volume.yaml

    Bekijk daarna de inhoud van het volume:

    kubectl exec -n productie check-restored-volume -- ls -la /data

    Verwijder de tijdelijke pod nadat je de data hebt gecontroleerd:

    kubectl delete pod check-restored-volume -n productie

     

    Je workload aan de herstelde PVC koppelen

     

    Nadat je de data hebt gecontroleerd, koppel je je applicatie aan de herstelde PVC. De exacte stappen hangen af van je workload en deploymentmethode.

    Gebruik je een Deployment met een vaste claimName, schaal de Deployment dan eerst terug:

    kubectl scale deployment <deploymentnaam> -n productie --replicas=0

    Pas daarna je manifest, Helm chart of Kustomize-configuratie aan zodat de workload webdata-restore gebruikt in plaats van webdata:

    volumes:
      - name: data
        persistentVolumeClaim:
          claimName: webdata-restore

    Pas de gewijzigde configuratie toe en schaal je Deployment daarna weer op:

    kubectl apply -f deployment.yaml
    kubectl scale deployment <deploymentnaam> -n productie --replicas=1

    Gebruik je een StatefulSet, controleer dan eerst hoe je applicatie de PVC gebruikt. Een StatefulSet maakt vaak PVC's aan via volumeClaimTemplates. Die PVC-namen zijn gekoppeld aan de StatefulSet en podnaam. Maak in dat geval eerst een herstelplan dat past bij je applicatie, bijvoorbeeld door data uit de herstelde PVC terug te kopiëren naar een nieuw volume met de verwachte naam.


     

    VolumeSnapshots opruimen

     

    Verwijder snapshots die je niet meer nodig hebt. De VolumeSnapshotClass team-blue-k8s gebruikt deletionPolicy Delete. Dit betekent dat de onderliggende snapshot in de storage-omgeving ook wordt verwijderd wanneer je het VolumeSnapshot-object verwijdert.

    kubectl delete volumesnapshot webdata-before-upgrade -n productie

    Controleer daarna of de snapshot weg is:

    kubectl get volumesnapshot -n productie

    Let op: het verwijderen van een VolumeSnapshot verwijdert niet automatisch PVC's die je eerder vanuit die snapshot hebt hersteld. Verwijder herstelde PVC's apart wanneer je ze niet meer gebruikt.


     

    Veelvoorkomende problemen

     

    • kubectl kent VolumeSnapshot niet: controleer of je verbonden bent met het juiste cluster en of de VolumeSnapshot-CRD's beschikbaar zijn.
    • De snapshot blijft op READYTOUSE false staan: wacht eerst enkele minuten en controleer daarna de events met kubectl describe volumesnapshot <snapshotnaam> -n <namespace>.
    • De restore-PVC blijft Pending: controleer of de StorageClass bestaat, of de gevraagde storagegrootte minimaal gelijk is aan de restoreSize, en of je dataSource naar de juiste VolumeSnapshot verwijst.
    • Je workload start niet met de herstelde PVC: controleer of de accessMode past bij je workload. Een ReadWriteOnce-volume wordt op één node tegelijk gekoppeld.
    • Je wilt naar een andere namespace herstellen: gebruik voor de standaardworkflow dezelfde namespace. Cross-namespace restores vereisen aanvullende Kubernetes-functionaliteit en zijn niet de basisworkflow in deze handleiding.

     

    Je hebt nu een VolumeSnapshot gemaakt, gecontroleerd en hersteld naar een nieuwe PersistentVolumeClaim. Gebruik snapshots als snel herstelpunt voor onderhoud en wijzigingen, en ruim oude snapshots op zodra je ze niet meer nodig hebt.

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op