Cómo crear un despliegue en Kubernetes
Los Despliegues representan un conjunto de Pods idénticos. Un Despliegue ejecuta múltiples copias de la aplicación. Sustituye automáticamente cualquier instancia que falle. Ayuda a garantizar que una o más instancias de la aplicación estén siempre en funcionamiento. Los Despliegues son gestionados por el controlador de Despliegue de Kubernetes. Los despliegues utilizan una plantilla Pod, que contiene una especificación para sus Pods.
Un despliegue de Kubernetes es un objeto de recurso en Kubernetes que proporciona actualizaciones declarativas a las aplicaciones.
Para saber más sobre las especificaciones del Despliegue, consulta ladocumentación de la API de Kubernetes
En este artículo, aprenderemos a crear un despliegue en Kubernetes y a realizar operaciones sobre él.
Requisitos previos
Cluster de Kubernetes con al menos 1 nodo trabajador.
Si quieres aprender a crear un Cluster de Kubernetes, haz clic aquí. Esta guía te ayudará a crear un cluster de Kubernetes con 1 Maestro y 2 Nodos en Instancias EC2 de AWS Ubuntu 18l04.
Qué vamos a hacer
Crear un despliegue
Crear un despliegue
Crea un archivo y añade la siguiente definición de despliegue en él.
vim my-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: labels: app: httpd-frontend name: httpd-frontend spec: replicas: 1 selector: matchLabels: app: httpd-frontend template: metadata: labels: app: httpd-frontend spec: containers: - image: httpd:2.4-alpine name: httpd
En este ejemplo:
- Se creará un Deployment llamado httpd-frontend, indicado por el campo
metadata: name
. - El Despliegue creará 1 réplica del Pod, indicada por el campo
replicas
. - La plantilla del Pod, o campo
spec: template
, indica que sus Pods están etiquetados
.app: httpd-frontend
- La especificación de la plantilla Pod, o campo
template: spec
, indica que los Pods ejecutan un contenedor, httpd, que ejecuta la imagen httpd: en la versión 2.4-alpine.
Utiliza el siguiente comando para crear un despliegue
kubectl create -f my-deployment.yaml
Una vez creado un despliegue, puedes obtener sus detalles utilizando el siguiente comando
kubectl get deployment | grep httpd-frontend
El despliegue ha creado un replica-set, para listarlo utiliza el siguiente comando.
kubectl get replicaset | grep httpd-frontend
Los pods creados por el replica-set se pueden listar utilizando el siguiente comando que listará los pods que coincidan con el nombre especificado.
kubectl get pods | grep httpd-frontend
Ahora, puedes probar la autocreación del pod si el existente falla borrándolo.
Para eliminar el pod existente, utiliza los siguientes comandos.
kubectl get pods | grep httpd-frontend
kubectl delete pod httpd-frontend-74fd6fd8cd-8nj2s
kubectl get pods | grep httpd-frontend
En la captura de pantalla anterior, puedes ver que el pod se ha creado después de eliminar el pod existente.
Ahora, aunque se elimine el conjunto de réplicas, el despliegue lo creará.
Para comprobarlo, elimina el conjunto de réplicas con el siguiente comando.
kubectl get replicaset | grep httpd-frontend
kubectl delete replicaset httpd-frontend-74fd6fd8cd
kubectl get replicaset | grep httpd-frontend
En la captura de pantalla anterior puedes ver que incluso después de eliminar el conjunto de réplicas, éste se ha creado.
Para ver un poco más de información del pod, se puede utilizar «-o wide» en el comando siguiente.
kubectl get pods | grep httpd-frontend
kubectl get pods -o wide | grep httpd-frontend
Para obtener la información completa del pod, se puede describir mediante el siguiente comando.
kubectl describe pod httpd-frontend
Ahora, si ya no necesitas que tu aplicación se despliegue utilizando el despliegue, se puede eliminar borrando el despliegue.
Utiliza los siguientes comandos para eliminar el despliegue.
kubectl get deployment | grep httpd-frontend
kubectl delete deployment httpd-frontend
kubectl get deployment | grep httpd-frontend
En la captura de pantalla anterior, puedes ver que después de eliminar el despliegue no se ha creado. Pero si eliminas el pod o el conjunto de réplicas que se crearon como parte del despliegue, se crearán.
Conclusión
En este artículo, hemos aprendido a crear un despliegue y hemos probado la operación de eliminación de Pod, Replicaset y Despliegue.