¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Conoce nuestra marca.¿Buscas nuestro logo?
Aquí te dejamos una copia, pero si necesitas más opciones o quieres conocer más, visita nuestra área de marca.
Conoce nuestra marca.dev
Fernando Cabadas 12/05/2022 Cargando comentarios…
A nadie le sorprenderá que Kubernetes se haya convertido en una gran plataforma para desarrollar las mejores aplicaciones. En nuestro blog ya hemos hablado de su éxito y de las distintas plataformas que existen según las necesidades.
Además, hace unas semanas nos centramos en el paso a paso para realizar el almacenamiento y persistencia de datos configurando Pods. Hoy nos vamos a centrar en el despliegue de una base de datos PostgreSql en un pod de Kubernetes con persistencia de datos. Veremos cómo al eliminar el pod y al volverlo a crear, los datos de la base de datos se mantienen. Te lo contamos paso a paso:
En primer lugar, creamos un volumen persistente. A continuación, el contenido del fichero yml para crear un PersistentVolume.
apiVersion: v1
kind: PersistentVolume
metadata:
name: mipv
spec:
storageClassName: local-storage
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
Luego, desplegamos el PersistentVolume a partir del fichero .yml que hemos creado anteriormente con el siguiente comando.
kubectl apply -f persistentVolume.yml}
Para ver el resultado del PersistentVolume ejecutamos el siguiente comando.
kubectl get pv
En segundo lugar, vemos el contenido del fichero yml para crear un PersistentVolumeClaim, necesario para poder enlazar el pod con el volumen persistente creado anteriormente.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mipvc
namespace: paradigma
spec:
storageClassName: local-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 512Mi
Desplegamos el PersistentVolumeClaim a partir del fichero .yml generado anteriormente con el siguiente comando.
kubectl apply -f persistentVolumeClaim.yml
A continuación vemos el resultado del PersistentVolumeClaim:
kubectl get pvc -n paradigma
El PVC ha quedado vinculado al PV desarrollado anteriormente.
Por último, vemos el contenido del fichero yml para desplegar un Pod con el volumen persistente creado anteriormente.
apiVersion: v1
kind: Pod
metadata:
name: mipostgresvolumenpersistente
namespace: paradigma
spec:
containers:
- name: postgres
image: postgres
env:
- name: POSTGRES_PASSWORD
value: "paradigma"
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
volumes:
- name: postgredb
persistentVolumeClaim:
claimName: mipvc
Desplegamos el Pod a partir del fichero .yml de antes con el siguiente comando:
kubectl apply -f postgresVolumenPersistente.yml
A continuación, comprobamos que el pod tiene asignado el volumen persistente.
kubectl decribe pod mipostgresvolumenpersistente -n paradigma
En el apartado de volúmenes vemos que el pod ha quedado enlazado al PVC.
Lo siguiente que haremos será acceder al pod para crear una base de datos, una tabla e insertar registros.
kubectl exec -it mipostgresvolumenpersistente -n paradigma -- /bin/bash
createdb -U postgres mibbdd
psql -U postgres mibbdd
CREATE TABLE productos (id int, nombre varchar(100));
INSERT INTO productos (id, nombre) VALUES (1, 'Coche');
SELECT * from productos;
Con los comandos anteriores hemos accedido al pod, creado una base de datos en PostgreSQL, accedido a ella, creado una tabla, insertado un registro y, por último, hemos hecho una consulta sobre la tabla.
A continuación salimos del pod y lo eliminamos.
kubectl delete pod mipostgresvolumenpersistente -n paradigma
kubectl get pods -n paradigma
Aunque lo hemos eliminado, podemos ver que tanto el PV como el PVC siguen existiendo.
kubectl get pv
kubectl get pvc -n paradigma
Si volvemos a crearlo y accedemos a él, veremos que sigue existiendo la base de datos y el registro que insertamos en la tabla.
kubectl apply -f postgresVolumenPersistente.yml
kubectl exec -it mipostgresvolumenpersistente -n paradigma -- /bin/bash
psql -U postgres mibbdd
SELECT * from productos;
Esto ha sido posible al utilizar volúmenes persistentes que son independientes al pod y que cuando el pod se elimina, el volumen no se elimina y se puede volver a utilizar.
En este post te hemos contado cómo desplegar una base de datos PostgreSql en un pod de Kubernetes con persistencia de datos y cómo al eliminar el pod y volverlo a crear, mientras los datos de la base de datos se mantienen. ¿Te has quedado con alguna duda? ¡Pregúntanos en los comentarios!
Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.
Cuéntanos qué te parece.