¿Escuchas mucho sobre Kubernetes pero no estás seguro de qué son?
What is Kubernetes?
Kubernetes es una herramienta de código abierto que se encarga de la orquestación de contenedores. Automatiza la implementación de contenedores, el escalado y desescalado continuo, el equilibrio de carga de contenedores, etc.
Google ha desarrollado inicialmente Kubernetes en el lenguaje de programación Go.
Actualmente, es líder del mercado en la orquestación de contenedores. Kubernetes es una plataforma ideal para alojar aplicaciones de microservicios que se escalan de forma dinámica. Cuando trabaja en un entorno de producción, Kubernetes es la plataforma preferida y más segura para la orquestación de contenedores.
Debido a que en un entorno de producción, espera cero tiempo de inactividad, su clúster siempre debe estar en funcionamiento.
Con Google Cloud Platform (GCP), puede iniciar Kubernetes con solo unos pocos clics. Es compatible con otros proveedores de la nube, también como AWS y Azure. Y hay varios plataforma Kubernetes administrada disponible.
Why Kubernetes?
Anteriormente, una pelea entre desarrolladores y probadores era algo común.
Los entornos solían ser diferentes para ellos; lo que funcionó en el sistema del desarrollador no se ejecutó en el sistema de probadores.
Ahora que la mayoría de las organizaciones utilizan contenedores, los problemas que surgen debido a diferencias en el entorno ya no ocurren.
Pero organizar y ejecutar varios contenedores tampoco es una tarea fácil. Cuando trabaja en aplicaciones dinámicas, escalando hacia arriba o hacia abajo, la cantidad de contenedores es algo normal. Hacer estas tareas manualmente puede resultar complejo y arriesgado. Por lo tanto, se requiere una herramienta de orquestación de contenedores y es por eso que se necesita Kubernetes.
Kubernetes Features
Hay muchos, pero los siguientes son algunos de los mejores.
# Embalaje automático de contenedores
Kubernetes empaqueta su aplicación y coloca contenedores automáticamente según sus requisitos y 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 de almacenamiento
Kubernetes monta automáticamente el sistema de almacenamiento de su elección. puede ser cualquiera almacenamiento local o una nube pública proveedor como AWS.
# Autocuración
Siempre que Kubernetes se dé cuenta de que uno de sus contenedores ha fallado, reiniciará ese contenedor por sí solo y también creará un nuevo contenedor en lugar del bloqueado. En caso de que su nodo falle, los contenedores que se ejecutan en ese nodo se iniciarán en otro nodo en ejecución en el clúster.
# Escala horizontal
Puede escalar sus aplicaciones hacia arriba y hacia abajo rápidamente con un simple comando. El comando simple se puede ejecutar en la CLI o mediante el panel de Kubernetes. El escalado automático también es posible, según el uso de la CPU, sus contenedores se escalarán o reducirán automáticamente.
# Rollback y rollout automático
Siempre que hay una actualización de su aplicación, Kubernetes implementa progresivamente estos cambios y actualizaciones en la aplicación o sus configuraciones. No todas las instancias se actualizan al mismo tiempo, lo que garantiza una alta disponibilidad. Si algo sale mal, Kubernetes revertirá los cambios de inmediato.
Kubernetes Terminologies
Antes de ensuciarse las manos, debe conocer algunas terminologías que se utilizan en Kubernetes con regularidad.
# Vaina
Representa uno o más contenedores que se ejecutan en un clúster.
# Servicio
Una forma abstracta de acceder al pod / aplicación.
# Espacio de nombres
Se utiliza para eliminar la colisión de nombres dentro de un clúster. Es compatible con varios clústeres virtuales en el mismo clúster físico.
# Nodo
Máquina de trabajo de Kubernetes.
# Médico
Consta de un grupo de nodos que ejecutan aplicaciones en contenedores en Kubernetes.
# Anotación
Una etiqueta para almacenar los datos requeridos por los recursos.
# Tamaño
Es el directorio de datos al que acceden los contenedores en el pod.
# conjunto de réplicas
Varias réplicas de cápsulas para correr.
# Disquera
Dar un nombre a los objetos de Kubernetes para que se puedan identificar 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.
# Proxy de Kube
Proxy de red que contiene todas las reglas de red en cada nodo del clúster.
Kubernetes and 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 sistemas operativos, bibliotecas y aplicaciones dentro de un contenedor. Déjame decirte que Docker hace lo mismo que debe hacer en Kubernetes. Pero cuando trabaja solo con Docker, todo es manual. Debe iniciar y detener los contenedores manualmente. Pero con Kubernetes, todo se automatiza.
Kubernetes puede programar pods que tienen contenedores, luego Kubelet le dice a Docker que inicie o detenga los contenedores. Kubelet en Kubernetes es responsable de monitorear esos contenedores y recopilar su información en el nodo maestro. Entonces, la diferencia básica es que en lugar de que los administradores le digan a Docker qué hacer, en Kubernetes, todo está automatizado.
Hay otra herramienta utilizada para la orquestación de contenedores es Enjambre Docker. Entonces, ¿cuál es la diferencia entre ellos?
Kubernetes vs. Docker Swarm
Kubernetes | Enjambre Docker |
La instalación es compleja | La instalación es sencilla |
Comunidad de código abierto más grande | Comunidad más pequeña en comparación con Kubernetes |
Puede orquestar cientos de contenedores fácilmente | Bueno para orquestar 10-20 contenedores |
El panel de Kubernetes proporciona GUI | Sin GUI |
Admite escalado automático | No admite escalado automático |
Admite actualizaciones continuas con reversión automática | Admite actualizaciones continuas pero no reversión automática |
Registro y monitoreo disponibles incorporados | Necesita un tercero como ELK para registro y monitoreo |
Puede compartir volumen con contenedores en el mismo pod | Puede compartir volumen con cualquier contenedor del clúster |
En resumen
Espero que ahora tenga una comprensión básica de qué es Kubernetes y cómo ayuda. Si está interesado en DevOps o está pensando en hacerlo, le sugiero que tome este fantástico curso de Udemy para aprender Kubernetes.