Kubernetes para impostores II

En este artículo veremos algunos de temas de infraestructura como:

  • de que hacer backup
  • mantenimiento de kubernetes

Mantenimiento de Kubernetes

Así es como se actualiza kubernetes:

$ snap refresh microk8s
[...]
microk8s v1.18.4 from Canonical✓ refreshed

Y así es como se actualiza el servidor entero:

apt-get update
apt-get -y upgrade

Un coste de mantenimiento elevadísimo para el que se necesita personal altamente cualificado tal como se puede apreciar. ;-)

Ahora vamos con el backup...

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.