¿Qué es Kubernetes?

Completado

El diseño desacoplado de microservicios, combinado con la atomicidad de los contenedores, permite escalar horizontalmente las aplicaciones que respondan a la demanda. En situaciones complejas, como la aplicación de seguimiento de drones, el proceso de implementación, actualización, supervisión y eliminación de contenedores plantea muchos retos.

Antes de examinar lo relativo a Kubernetes, hay dos conceptos que debe comprender primero, la administración de contenedores y los orquestadores.

¿En qué consiste la administración de contenedores?

La administración de contenedores es el proceso de organización, adición, eliminación o actualización de un número significativo de contenedores.

La aplicación de seguimiento de drones consta de varios microservicios, responsables de tareas como el almacenamiento en caché, la puesta en cola o el procesamiento de datos. Cada uno de estos servicios se hospeda en un contenedor que se implementa, actualiza y escala de forma independiente.

Diagram of a server or application replicated as containers for cloud deployment.

Por ejemplo, con el sitio web de la aplicación de seguimiento de drones se puede ver que durante determinadas horas del día se necesitan más instancias del servicio de almacenamiento en caché del sitio para mantener el rendimiento, por lo que se agregan más instancias de contenedor del servicio de almacenamiento en caché.

A continuación, imagine que ha aumentado el número de instancias de almacenamiento en caché y necesita implementar una nueva versión del microservicio. Es necesario actualizar todos los contenedores activos para usar la nueva versión.

La administración de contenedores le ayuda con estas tareas manuales repetitivas.

¿Qué es un orquestador de contenedores?

Un orquestador de contenedores es un sistema que implementa y administra automáticamente aplicaciones en contenedores. Como parte de la administración, el orquestador controla el escalado de cambios dinámicos en el entorno para aumentar o reducir el número de instancias implementadas de la aplicación. También garantiza que todas las instancias de contenedor implementadas se actualicen cuando se publique una nueva versión de un servicio.

Diagram showing how number of deployed container instances is automatically increased if demand rises and how an orchestrator ensures all deployed instances are updated with the latest software version.

Definición de Kubernetes

Kubernetes es una plataforma de código abierto portable y extensible para la administración y orquestación de cargas de trabajo en contenedores. Kubernetes simplifica tareas de administración de contenedores complejas y proporciona una configuración declarativa para orquestar los contenedores de distintos entornos de proceso. Esta plataforma de orquestación ofrece la misma facilidad de uso y flexibilidad que le podrían resultar familiares de ofertas de plataforma como servicio (PaaS) e infraestructura como servicio (IaaS).

Diagram of replicated servers as multiple containers in a Kubernetes cluster.

Ventajas de Kubernetes

Las ventajas de usar Kubernetes se basan en la abstracción de tareas

Diagram that lists three Kubernetes benefits: self-healing, dynamic scaling, and rolling updates.

Estas tareas incluyen:

  • Recuperación automática: por ejemplo, para reiniciar contenedores con errores o para reemplazar contenedores

  • Escalado vertical o disminución del número de contenedores implementados de forma dinámica según la demanda

  • Actualizaciones graduales automáticas y reversiones de contenedores

  • Administración del almacenamiento

  • Administración del tráfico de red

  • Almacenamiento y administración de información confidencial, como nombres de usuario y contraseñas

Importante

Tenga que cuenta que todos los aspectos anteriores de Kubernetes requieren que el usuario los configure y comprenda correctamente las tecnologías subyacentes. Por ejemplo, para configurar redes de Kubernetes, deberá conocer conceptos como redes virtuales, equilibradores de carga, servidores proxy inversos, etc.

Consideraciones sobre Kubernetes

Con Kubernetes, el centro de datos se puede ver como un gran recurso de procesos. No necesita preocuparse de cómo y dónde implementar los contenedores, solo de implementar y escalar las aplicaciones según sea necesario.

Diagram that shows a list of Kubernetes components that including monitoring, microservices, databases, and the Docker runtime.

Pero es importante entender que Kubernetes no es una única aplicación instalada que incluye todos los componentes posibles necesarios para administrar y orquestar una solución en contenedores:

  • Algunos aspectos, como la implementación, el escalado, el equilibrio de carga, el registro y la supervisión, son opcionales. Debe encargarse de encontrar la mejor solución que se ajuste a sus necesidades para abordar estos aspectos.

  • Kubernetes no limita los tipos de aplicaciones que se pueden ejecutar en la plataforma. Si la aplicación se puede ejecutar en un contenedor, se puede ejecutar en Kubernetes. Para hacer el mejor uso posible de las soluciones de contenedores, los desarrolladores deben entender conceptos como la arquitectura de microservicios.

  • Kubernetes no proporciona middleware, marcos de procesamiento de datos, bases de datos, cachés ni sistemas de almacenamiento de clústeres. Todos estos elementos se ejecutan como contenedores o como parte de otra oferta de servicio.

  • Para que Kubernetes ejecute contenedores, necesita un entorno de ejecución de contenedores, como Docker o containerd. El entorno de ejecución del contenedor es el objeto responsable de administrar los contenedores. Por ejemplo, el entorno de ejecución del contenedor se inicia, se detiene y notifica el estado del contenedor.

  • Debe mantener el entorno de Kubernetes. Por ejemplo, debe administrar las actualizaciones del sistema operativo, así como la instalación y las actualizaciones de Kubernetes. También puede administrar la configuración de hardware de las máquinas host, como las redes, la memoria y el almacenamiento.

Los servicios en la nube, como Azure Kubernetes Service (AKS), facilitan estas tareas porque proporcionan un entorno de Kubernetes hospedado. Estos servicios también simplifican la implementación y administración de aplicaciones en contenedores en Azure. Con AKS, se obtienen las ventajas que proporciona Kubernetes de código abierto, sin la complejidad ni la sobrecarga operativa que tendría la ejecución de nuestro propio clúster de Kubernetes personalizado.

Nota:

Kubernetes a veces se abrevia como K8s. El número 8 representa los ocho caracteres que hay entre la K y la S de la palabra K[ubernete]s.