¿Qué es Kubernetes? ¿Para qué sirve?

Kubernetes es una plataforma open source para administrar cargas de trabajo y servicios, facilitando la automatización y eliminando muchos de los procesos manuales durante la implementación y escalabilidad de las aplicaciones en contenedores. En este sentido, nos ofrece una mayor simpleza en plataformas como servicio (PaaS) y una mayor flexibilidad en la infraestructura como servicio (IaaS), permitiendo la portabilidad entre proveedores de infraestructura. Se puede desplegar en diversos entornos cloud y soporta múltiples runtimes de contenedores (docker, rkt, cri-o o frakti).
Aunque en el origen de esta interesante plataforma portable y extensible fue Google el encargado del desarrollo y diseño, en 2014 el gigante tecnológico decidió liberar el proyecto y donarlo a la Cloud Native Computing Foundation (Linux Foundation). Al igual que Docker, Kubernetes se ha convertido en uno de los estándares como gestor de contenedores de software dentro de la industria.

Índice | ¿Qué es Kubernetes?

Orquestación de contenedores

Kubernetes es un orquestador de contenedores, o lo que es lo mismo, el gestor del ciclo de vida de los contenedores de una aplicación, ya que ofrece servicios como el manejo del clúster (añadiendo o eliminando nodos), servicios de red y load-balancing (repartiendo la carga entre las distintas máquinas virtuales), servicios de monitorización o de checking del estado de salud de cada uno de los contenedores. Además, ofrece la opción del autoescalado y un Service Discovery para que un contenedor pueda encontrar con relativa facilidad las rutas IP o el DNS de otro contenedor. 

Un clúster de Kubernetes está compuesto de varias máquinas (nodos), cada uno de los cuales debe ejercer el rol de nodo master o el rol de nodo minion. En este sentido, un mínimo de cinco máquinas virtuales, formado por tres nodos master y dos nodos minion, serán necesarias para garantizar la productividad del clúster.

MANUAL KUBERNETES GRATIS

Nodo Master

Aquellos nodos encargados de coordinar el clúster. Como mínimo, debe existir un nodo master en cada clúster de Kubernetes. Normalmente no ejecutan contenedores, sino que deciden en qué nodo se ejecuta cada contenedor. Por otro lado, también se encargan de actualizar coordinadamente las aplicaciones en cuanto se despliegan nuevas versiones.

Nodo Minion

Aquellos nodos que se encargan de la ejecución de los contenedores desplegados en el clúster de Kubernetes. Está compuesto por un motor de contenedores instalado en el clúster, un kubelet (encargado de monitorizar que un contenedor se pone en marcha, funciona correctamente y en caso de error, reinicia inmediatamente) y un kube-proxy (encargado de gestionar la red virtual y las IPs virtuales que asignamos a cada contenedor).

Otros elementos secundarios de Kubernetes son los addons, que funcionan como contenedores o pods. Destacamos web dashboard, para navegar por una interfaz web muy visual e intuitiva donde monitorizar y gestionar el clúster, kube-dns, para obtener un sistema DNS interno en nuestro clúster, o sistemas de logging centralizado. Si quieres consultar otros addons disponibles, haz click en este enlace.

Características más importantes de Kubernetes

Entre sus características más importantes podemos destacar las siguientes:

  • Escalado vertical. En función del uso de CPU que hagamos Kubernetes nos permite el escalado vertical de nuestras aplicaciones de manera automática (autoescalado) o manual (comando). 
  • Reparación automática. En caso de ocurrir un fallo en un contenedor podemos reiniciar automáticamente, así como reemplazarlo o replanificarlo cuando un nodo muere. También nos ofrece la posibilidad de reparar aquellos health checks definidos por el usuario que no respondan. 
  • Planificación de nodos y contenedores. Kubernetes nos ayuda a decidir en qué nodo se ejecutará cada contenedor, en función de los recursos necesarios y otras restricciones. Además, podemos mezclar cargas de trabajo críticas y best-effort con el objetivo de potenciar el ahorro de recursos.
  • Despliegues y rollbacks automáticos. Podemos desplegar los cambios de manera progresiva cuando actualizamos una aplicación o cambiamos su configuración, y así poder realizar un rollback automático en caso de fallo en alguna de las instancias. 
  • Orquestador de contenedores. Kubernetes permite montar de forma automática el sistema de almacenamiento necesario para los contenedores: en modo local, en un proveedor de cloud pública, o en un sistema de red como NFS, Flocker o Gluster.
  • Almacenamiento persistente. Kubernetes goza de soporte en plataformas como Amazon Web Services o Google Cloud Platform, y los proveedores (Red Hat, Dell EMC, NetApp, etc) le proporcionan almacenamiento persistente. 
  • Descubrimiento de servicios. Con Kubernetes asignamos a los contenedores sus propias direcciones IP y un nombre DNS específico para cada conjunto de contenedores. Así, no resulta necesario utilizar recursos externos para el descubrimiento de servicios.
  • Seguridad. Toda nuestra información sensible, como contraseñas o claves ssh, podemos almacenarla de manera segura en secrets. En este sentido, Kubernetes no expone nuestra información confidencial a la hora de desplegar y configurar nuestras aplicaciones. 
  • Clusters grandes y heterogéneos. Kubernetes puede desplegarse en clusters muy grandes, incluyendo contenedores Docker. Por otro lado, nos permite crear un clúster como resultado de combinar diferentes máquinas virtuales o servidores locales.

¿Por qué es tan importante conocer Kubernetes?

Kubernetes proporciona toda la infraestructura necesaria para que los desarrolladores o DevOps puedan construir un entorno de desarrollo focalizado en el contenedor, incluyendo funcionalidades tan importantes como el autoescalado, la autorreplicación o el reinicio automático. Además, si implementamos Kubernetes en Docker podemos programar y ejecutar todas nuestras aplicaciones en los contenedores en grupos físicos o de máquinas virtuales. Gracias al uso de estos contenedores o pods, obtenemos beneficios como una mayor agilidad en la creación y despliegue de aplicaciones, una mayor eficiencia y densidad en la utilización de los recursos, y una mayor consistencia entre los entornos de desarrollo, pruebas y producción. Además, la portabilidad entre nubes y distribuciones, simplifica mucho el proceso en Kubernetes.

¿Cómo aprender a usar Kubernetes?
Kubernetes es una herramienta imprescindible para el trabajo de desarrolladores y DevOps. Por ello, en Formadores IT te ofrecemos un manual Kubernetes gratis, que puedes descargar fácilmente a través de este formulario.

Además, te ofrecemos una formación completa en Kubernetes, en modalidad online, con la que adquirirás todas las herramientas necesarias para desarrollar un uso avanzado de todas las funcionalidades de este sistema para la orquestación de contenedores y el despliegue de aplicaciones. 

Soluciones Formativas Ofertadas:

Curso Kubernetes online

Curso Docker online

Descargar manual Kubernetes

Posts Relacionados

En la línea de comandos de Kubernetes, se introducen diferentes comandos a través de los cuales se pueden realizar las principales funciones de gestión y despliegue de múltiples contenedores. Dominar los comandos de Kubernetes es Leer más…

Gracias al uso de contenedores es posible utilizar aplicaciones de software en diferentes entornos al empaquetar todo lo necesario para su ejecución en el propio contenedor. La popularidad de los contenedores hace que su uso Leer más…

Kubernetes es una plataforma de orquestación de código abierto para implementar, gestionar y escalar contenedores. Con el servicio de Kubernetes que ofrece Microsoft se facilitan las principales tareas y acciones a realizar para trabajar con Leer más…