Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Cómo desplegar una aplicación en Kubernetes

Carlos Alvarez
  • Escrito por Carlos Alvarez el 27 de Junio de 2018
  • 2 min de lectura | DevOps
Cómo desplegar una aplicación en Kubernetes
El reproductor de video será cargado en breves instantes.

En este pequeño vídeo práctico vamos a enseñar como desplegar una aplicación en Kubernetes.

Durante este video vamos a realizar varias acciones:

  1. Un pequeño despliegue, a través de un fichero de definición.
  2. Cambios en los Pod, a través del propio fichero.
  3. Cambios en caliente, es decir, desde la línea de comando.

Despliegue de la aplicación

Primero vamos a realizar el despliegue, definiendo antes de nada el fichero:

nano nginx-deployment.yaml

A continuación vamos a sustituir el número de réplicas, cambiando de tres a dos, para hacer una imagen de nginx de tipo deployment.

Una vez tenemos definido el fichero, tenemos que crear el deployment:

kubectl create -f nginx-deployment.yaml

Si queremos ver en qué estado está:

kubectl rollout status deployment/nginx-deployment

Nos indica que se ha desplegado correctamente.

Lo siguiente que haremos será ver cómo están los Pods que ha creado:

kubectl get pods --show-labels

Aquí podemos ver que nos ha creado las dos réplicas que habíamos indicado, que están corriendo y el tiempo que llevan activas.

Si lo que queremos ver es lo que ha creado el propio deployment:

kubectl describe deployment/nginx-deployment

Podemos ver un pequeño resumen de los eventos que ha tenido y la imagen. Os daréis cuenta que es muy parecido al fichero de definición, sólo que además aporta algunos campos más de valor. Vemos también las réplicas, el nombre de la app, el namespace, etc.

Cambios en los Pods

Ahora vamos a imaginar que, por ejemplo, estamos teniendo una carga de peticiones mucho más grandes y necesitamos tener más replicas corriendo. La primera forma que tendríamos de hacerlo sería así:

Editar el fichero de definición:

nano nginx-deployment.yaml

Dónde se indica el número de réplicas, cambiamos el valor de dos a tres.

Ahora lo que tendremos que hacer será actualizar el deployment que hay ya hecho:

kubectl apply -f nginx-deployment.yaml

Una vez aplicado vamos a hacer un rollout:

kubectl rollout status deployment/nginx-deployment

Y después vamos a comprobar el estado:

kubectl get pods --show-labels

Y vemos que lo que ha hecho ha sido desplegar una nueva réplica.

Cambios en caliente

Si por ejemplo, necesitamos hacer una actualización de la versión de nginx, lo podemos hacer en caliente, que es la otra forma de hacer actualizaciones dentro de los Pods.

Para hacerlo desde línea de comando lo haríamos así:

kubectl set image deployment/nginx-deployment nginx=ngnix:1.9.1

De esta forma actualizamos a la versión 1.9.1 de nginx.

Si hacemos de nuevo un rollout comprobamos que está esperando que termine una de las réplicas que se han actualizado:

kubectl rollout status deployment/nginx-deployment

Comprobamos también el estado de los contenedores:

kubectl get pods --show-labels

Dónde se muestra que se ha creado el nuevo contenedor llamado nginx-deployment-69df9ccbf8-wkrx4

Finalmente comprobamos la versión de nginx que está corriendo, tanto en los Pod antiguos y el nuevo que hemos creado a continuación:

kubectl describe pod nginx-deployment-85f7784776-4qn8w

kubectl describe pod nginx-deployment-69df9ccbf8-wkrx4

Vemos que los primeros Pods tienen corriendo la versión 1.7.9 de nginx, mientras que el nuevo Pod tiene la versión 1.9.1.

Resumen

¿Qué nos permite esto?

Nos permite realizar acciones de escalado rápidamente, actualizaciones, paradas, controlar el QoS (Quality of Service), crecer o decrecer según las necesidades que tengamos en esos momentos, etc.

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars