Kubernetes: Lagring og Persistent Volumes
Denne guiden viser deg hvordan du oppretter persistent lagring med administrert Kubernetes hos Deploi.
Når man legger ut en tjeneste på Kubernetes, vil tjenesten få midlertidig lagring. Hvis tjenesten feiler og må startes opp på nytt, vil denne midlertidige lagringen gå tapt. Hvis du ønsker å ha lagring som varer, må du opprette persistent lagring — Persistent Volumes.
For å opprette en persistent disk, legg følgende i «disk.yaml»:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: example-disk spec: accessModes: - ReadWriteMany volumeMode: Filesystem resources: requests: storage: 1Gi storageClassName: deploi-file-storage-sc
Kjør deretter «kubectl apply -f disk.yaml». Det vil da automatisk opprettes en disk (Persistent Volume) på 1 GiB. Denne kan leses fra og skrives til fra flere tjenester på én gang.
Du har nå en disk du kan bruke i tjenestene dine. Disken blir liggende til du sletter den. Da vil alt innholdet bli permanent slettet og det er ikke mulig å gjenopprette.
Disktyper «Storage Classes» tilgjengelig
Når du oppretter en disk, må du angi hva slags type det skal være. (Se nederste linje i eksempelfilen over.) Hos Deploi har du følgende alternativer.
- «deploi-file-storage-sc» — Fillagring, støtter ReadWriteMany. Kan brukes til distribuert fil-lagring.
- «deploi-block-storage» — Block-lagring, støtter ReadWriteOnce. Kan brukes både til block-lagring og fil-lagring.
Test disken
La oss nå teste disken ved å installere en tjeneste som bruker den. Lag filen «test-pod.yaml» med følgende innhold.
apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: web-server image: nginx volumeMounts: - name: test-disk mountPath: /usr/share/nginx/html resources: limits: cpu: 100m memory: 200Mi volumes: - name: test-disk persistentVolumeClaim: claimName: example-disk readOnly: false
Kjør deretter «kubectl apply -f test-pod.yaml».
Gå deretter inn i podden. Gå så til mappen der disken er satt opp og lag en fil. Du vil nå se at filen ligger der.
kubectl exec --stdin --tty test-pod -- /bin/bash cd /usr/share/nginx/html/ echo "Dette er en test." > test.txt ls -la
Hvis du nå sletter podden og oppretter den igjen vil filen fremdeles ligge der.
kubectl delete -f test-pod.yaml kubectl apply -f test-pod.yaml
Gå inn i podden og se at filen fremdeles ligger der.
kubectl exec --stdin --tty test-pod -- /bin/bash cd /usr/share/nginx/html/ ls -la cat test.txt
Lokal Backup
Ønsker du å ta backup av mappen, kan du kjøre følgende kommando. Denne vil opprette en lokal backup av disken i Kubernetes.
kubectl exec test-pod -- tar cfvz - /usr/share/nginx/html > backup.tar.gz