¿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.
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
Kubernetes | Enjambre Docker |
La instalación es compleja | La instalación es sencilla |
Mayor comunidad de código abierto | Comunidad más pequeña en comparación con Kubernetes |
Puede orquestar 100s de contenedores fácilmente | Bueno para orquestar 10-20 contenedores |
Kubernetes Dashboard proporciona GUI | Sin GUI |
Admite autoescalado | No soporta auto-escalado |
Soporta rolling updates con rollback automático | Soporta rolling updates pero no rollback automático |
Registro y supervisión incorporados | Necesita terceros como ELK para el registro y la supervisión |
Puede compartir volumen con contenedores del mismo pod | Puede 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.