¿Oye hablar mucho de Kubernetes pero no está seguro de lo que son?

¿Qué es Kubernetes?

Kubernetes es una herramienta de código abierto que se encarga de la orquestación de contenedores. Automatiza el despliegue de contenedores, el escalado y desescalado continuos, el equilibrio de carga de contenedores, etc.

Kubernetes GeekFlare

Google ha desarrollado inicialmente Kubernetes sobre el lenguaje de programación Go.

Actualmente, es el líder del mercado en la orquestación de contenedores. Kubernetes es una plataforma ideal para alojar aplicaciones de microservicios que se escalan dinámicamente. Cuando se trabaja en un entorno de producción, Kubernetes es la plataforma preferida y más segura para la orquestación de contenedores.

Dado que en un entorno de producción se espera un tiempo de inactividad cero, su clúster debe estar siempre en funcionamiento.

Con Google Cloud Platform (GCP), puede poner en marcha Kubernetes con sólo unos clics. Es compatible con otros proveedores de nubes, también como AWS y Azure. Y, hay múltiples plataformas Kubernetes gestionadas disponibles.

¿Por qué Kubernetes?

Antes, la lucha entre desarrolladores y probadores era algo habitual.

Los entornos solían ser diferentes para ellos; lo que funcionaba en el sistema del desarrollador no funcionaba en el de los probadores.

Ahora que la mayoría de las organizaciones utilizan contenedores, los problemas que aparecían debido a las diferencias en el entorno ya no se producen.

Pero organizar y ejecutar varios contenedores tampoco es una tarea fácil. Cuando se trabaja con aplicaciones dinámicas, ampliar o reducir el número de contenedores es algo habitual. Realizar estas tareas manualmente puede resultar complejo y arriesgado. De ahí que se necesite una herramienta de orquestación de contenedores, y por eso se necesita Kubernetes.

Características de Kubernetes

Hay muchas, pero las siguientes son algunas de las mejores.

# Empaquetado automático de contenedores

Kubernetes empaqueta su aplicación y coloca automáticamente los contenedores en función de sus necesidades y de los recursos disponibles

# Descubrimiento de servicios y equilibrio de carga

Kubernetes asigna automáticamente a los contenedores sus direcciones IP y un nombre DNS a los contenedores que ejecutan operaciones lógicas. La función de equilibrio de carga también está presente entre el conjunto de contenedores.

# Orquestación del almacenamiento

Kubernetes monta automáticamente el sistema de almacenamiento de su elección. Puede ser un almacenamiento local o un proveedor de nube pública como AWS.

# Autocuración

Siempre que Kubernetes se dé cuenta de que uno de sus contenedores ha fallado, reiniciará ese contenedor por sí mismo creando también un nuevo contenedor en lugar del que se ha estrellado. En caso de que su nodo falle, los contenedores que se estén ejecutando en ese nodo se iniciarán en otro nodo en ejecución del clúster.

# Escalado horizontal

Puede escalar sus aplicaciones hacia arriba y hacia abajo rápidamente con un simple comando. El simple comando puede ejecutarse en la CLI o a través del panel de control de Kubernetes. El autoescalado también es posible, basándose en el uso de la CPU, sus contenedores se escalarían automáticamente hacia arriba o hacia abajo.

# Rollback y Rollout automáticos

Cada vez que se produce una actualización en su aplicación, Kubernetes despliega progresivamente estos cambios y actualizaciones en la aplicación o en sus configuraciones. No todas las instancias se actualizan al mismo tiempo, garantizando así una alta disponibilidad. Si algo va mal, Kubernetes deshará los cambios inmediatamente.

Aprenda a instalar y configurar Kubernetes.

Terminología de Kubernetes

Antes de ensuciarse las manos, debe conocer algunas terminologías utilizadas habitualmente en Kubernetes.

# Pod

Representa uno o más contenedores que se ejecutan en un clúster.

# Servicio

Una forma abstracta de acceder a un pod/aplicación.

# Espacio de nombres

Se utiliza para eliminar la colisión de nombres dentro de un clúster. Admite varios clústeres virtuales en el mismo clúster físico.

# Nodo

Máquina trabajadora de Kubernetes.

# Clúster

Formado por un grupo de nodos que ejecutan aplicaciones en contenedores en Kubernetes.

# Anotación

Etiqueta para almacenar los datos requeridos por los recursos.

# Volumen

Es el directorio de datos al que acceden los contenedores en pod.

# ReplicaSet

Varias réplicas de pods en ejecución.

# Etiqueta

Dar un nombre a los objetos Kubernetes para que puedan ser identificados en todo el sistema.

# Kubelet

Es un agente que se ejecuta en cada nodo y comprueba si los contenedores se están ejecutando en los pods.

# Kubectl

Utilidad de línea de comandos para interactuar con el servidor API de Kubernetes.

# Kube-proxy

Proxy de red que contiene todas las reglas de red en cada nodo del clúster.

Kubernetes y Docker

Ahora podría estar pensando, en qué se diferencia Kubernetes de Docker. La frase Kubernetes vs. Docker puede ser engañosa.

Docker es una plataforma que empaqueta SO, librerías y aplicaciones dentro de un contenedor. Permítame decirle que Docker hace lo mismo que Kubernetes. Pero cuando se trabaja sólo con Docker, todo es manual. Tiene que iniciar y detener los contenedores manualmente. Pero con Kubernetes, todo se automatiza.

Kubernetes puede programar pods que tienen contenedores, Kubelet entonces le dice a Docker que inicie o detenga los contenedores. Kubelet en Kubernetes se encarga de monitorizar esos contenedores y recopilar su información en el nodo maestro. Así pues, la diferencia básica es que en lugar de que los administradores le digan a Docker lo que tiene que hacer, en Kubernetes todo está automatizado.

Otra herramienta utilizada para la orquestación de contenedores es Docker Swarm. Entonces, ¿cuál es la diferencia entre ellas?

Kubernetes frente a Docker Swarm

KubernetesEnjambre Docker
La instalación es complejaLa instalación es sencilla
Mayor comunidad de código abiertoComunidad más pequeña en comparación con Kubernetes
Puede orquestar 100s de contenedores fácilmenteBueno para orquestar 10-20 contenedores
Kubernetes Dashboard proporciona GUISin GUI
Admite autoescaladoNo soporta auto-escalado
Soporta rolling updates con rollback automáticoSoporta rolling updates pero no rollback automático
Registro y supervisión incorporadosNecesita terceros como ELK para el registro y la supervisión
Puede compartir volumen con contenedores del mismo podPuede compartir volumen con cualquier contenedor del clúster

Conclusión

Espero que ahora tenga una comprensión básica de lo que es Kubernetes y cómo ayuda. Si usted en DevOps o pensando en entrar en, entonces yo sugeriría tomar este fantástico curso Udemy para aprender Kubernetes.