Backup ... y como restaurarlo
Antes de nada, existen aplicaciones para backup en Kubernetes que no voy a usar aquí porque requieren conocimientos de Kubernetes y estos posts son para gente que no sabe ni quiere saber. Pero si te interesa este tema, échale un ojo a Velero.
Backup de las aplicaciones
Hacemos un backup de todos los objetos de kubernetes que nos interesan:
#!/bin/bash for namespace in `kubectl get namespaces | awk '{print $1}' | grep -v NAME | grep -v ingress | grep -v kube-node-lease | grep -v kube-public | grep -v kube-system`; do kubectl get namespace $namespace -o yaml > $namespace.yaml for object in statefulset daemonset deployment deploymentconfig pvc service ingress route secret configmap; do kubectl -n $namespace get $object -o yaml > $namespace-$object.yaml done done
Recuperación de las aplicaciones
Restauramos los objetos que hemos creado previamente:
#!/bin/bash for namespace in `ls *namespace.yaml`; do kubectl apply -f $namespace done for object in `ls *yaml | grep -v namespace.yaml`; do kubectl apply -f $object done
Backup de los datos
Los volúmenes se guardan en /var/snap/microk8s/common/default-storage/
y dentro te crea un directorio por volumen con el formato namespace-nombreVolumen-daleAlTabuladorDosVeces
.
Por ejemplo, para la mariadb del wordpress que hemos instalado en el namespace default, tienes los datos en /var/snap/microk8s/common/default-storage/default-data-wordpress-mariadb-0-daleAlTabuladorDosVeces
y para los datos del wordpress sería algo como esto /var/snap/microk8s/common/default-storage/default-wordpress-daleAlTabuladorDosVeces
.
El backup consiste en copiar todos los datos de /var/snap/microk8s/common/default-storage
. Si tienes bases de datos, puedes ejecutar un microk8s.stop
antes y un microk8s.start
después.
Recuperación de los datos
Primero restauramos las aplicaciones como hemos visto arriba para que nos cree la estructura de directorios en /var/snap/microk8s/common/default-storage
y luego restauramos el backup respetando los nuevos nombres que nos ha creado.
Si por ejemplo al principio teníamos un /var/snap/microk8s/common/default-storage/default-wordpress-pvc-e040dd68-7475-40fb-bcbb-5c160155a06b
y ahora nos ha creado un /var/snap/microk8s/common/default-storage/default-wordpress-pvc-12345678-1234-1234-1234-123456789101
tenemos que restaurar los ficheros de un directorio en el otro. Recuerda ... microk8s.stop
cuando empieces a restaurar y microk8s.start
cuando hayas acabado.