Almacenamiento en Kubernetes
Los siguientes apartados los encuentras en el Curso de Kubernetes:
- Consideraciones sobre el almacenamiento
- Volúmenes en Kubernetes - Vídeo
- Aprovisionamiento de volúmenes - Vídeo
- Solicitud de volúmenes - Vídeo
- Uso de volúmenes
- Ejemplo: Gestión dinámica de volúmenes - Vídeo
- Ejemplo: Wordpress con almacenamiento persistente - Vídeo
Ejercicio 1: Desplegando un servidor web persistente
Siguiendo la guía explicada en el Ejemplo: Gestión dinámica de volúmenes, vamos a crear un servidor web que permita la ejecución de scripts PHP con almacenamiento persistente.
Para realizar esta actividad vamos a usar asignación dinámica de volúmenes y puedes usar, como modelos, los ficheros del ejemplo 2.
Realiza los siguientes pasos:
- Crea un fichero yaml para definir un recurso PersistentVolumenClaim que se llame
pvc-webservery para solicitar un volumen de 2Gb. - Crea el recurso y comprueba que se ha asociado un volumen de forma dinámica a la solicitud.
- Crea un fichero yaml para desplegar un servidor web desde la imagen
php:7.4-apache, asocia el volumen al Pod que se va a crear e indica el punto de montaje en el DocumentRoot del servidor:/var/www/html. - Despliega el servidor y crea un fichero
info.phpen/var/www/html, con el siguiente contenido:<?php phpinfo(); ?>. - Define y crea un Service NodePort, accede desde un navegador al fichero
info.phpy comprueba que se visualiza de forma correcta. - Comprobemos la persistencia: elimina el Deployment, vuelve a crearlo y vuelve a acceder desde el navegador al fichero
info.php. ¿Se sigue visualizando?
Ejercicio 2: Haciendo persistente la aplicación GuestBook
En este ejercicio vamos a volver a desplegar nuestra aplicación GuestBook, que realizamos en el taller 4 y 5, para añadirle persistencia a la base de datos redis.
Por lo tanto necesitaremos solicitar un volumen, que se asociará de forma dinámica.
Creando el despliegue de redis para que guarde la información en un directorio
Si estudiamos la documentación de la imagen redis en Docker Hub, para que la información de la base de datos se guarde en un directorio /data del contenedor hay que ejecutar con docker:
docker run --name some-redis -d redis redis-server --appendonly yes
Es decir, hay que crear el contenedor ejecutando el proceso redis-server con los argumentos --appendonly yes.
Por lo tanto tenemos que cambiar el fichero de definición del Deployment de redis, redis-deployment.yaml de la siguiente manera:
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
labels:
app: redis
tier: backend
spec:
replicas: 1
selector:
matchLabels:
app: redis
tier: backend
template:
metadata:
labels:
app: redis
tier: backend
spec:
volumes:
- name: volumen-redis
persistentVolumeClaim:
claimName: xxxxxxxxxxxx
containers:
- name: contenedor-redis
image: redis
command: ["redis-server"]
args: ["--appendonly", "yes"]
ports:
- name: redis-server
containerPort: 6379
volumeMounts:
- mountPath: xxxxxxxxxxxx
name: volumen-redis
Hemos usado el parámetro command para ejecutar el proceso, y el parámetro args para indicar los argumentos.
Nota: Los valores xxxxxxxxxxxx tendrás que rellenarlos durante la realización de la actividad.
Pasos a seguir
Realiza los siguientes pasos:
- Crea un fichero yaml para definir un recurso PersistentVolumenClaim que se llame
pvc-redisy para solicitar un volumen de 3Gb. - Crea el recurso y comprueba que se ha asociado un volumen de forma dinámica a la solicitud.
- Modifica el fichero del despliegue de redis, modificando las
xxxxxxxxxxxxpor los valores correctos: el nombre del PersistentVolumenClaim y el directorio de montaje en el contenedor (como hemos visto anteriormente es/data). - Crea el despliegue de redis. El despliegue de la aplicación
guestbooky la creación de los Services de acceso se hace con los ficheros que ya utilizamos anteriormente:guestbook-deployment.yaml,guestbook-srv.yamlyredis-srv.yaml. - Accede a la aplicación y escribe algunos mensajes.
- Comprobemos la persistencia: elimina el despliegue de redis, vuelve a crearlo, vuelve a acceder desde el navegador y comprueba que los mensajes no se han perdido.
Ejercicio 3: Haciendo persistente la aplicación Nextcloud
Esta actividad es la continuación de la actividad realizada en el taller 5.
Siguiendo la guía que hemos desarrollado en Ejemplo 3: Wordpress con almacenamiento persistente vamos a configurar el despliegue de Nextcloud para que use volúmenes (vamos a usar dos volúmenes, uno para la aplicación y otro para la base de datos) para que la información no se pierda.
Realiza los siguientes pasos:
- Crea los ficheros yaml para definir los recursos PersistentVolumenClaim para solicitar dos volúmenes de 4Gb.
- Crea esos recursos y comprueba que se ha asociado un volumen de forma dinámica a cada solicitud.
- Modifica los ficheros de despliegue de la aplicación y la base de datos para asociar los volúmenes a cada uno. Según la documentación de la imagen Nextcloud en Docker Hub, la forma más sencilla de hacer persistente la aplicación es montar el volumen en el directorio
/var/www/html/. - Accede a la aplicación, configúrala y sube un fichero.
- Comprobemos la persistencia: elimina los despliegues, vuelve a crearlos y vuelve a acceder desde el navegador y comprueba que la aplicación está configurada y mantiene el fichero que habías subido.