Introducción a Kubernetes y AKS
A medida que explora los principios de la contenedorización para aumentar la agilidad y la densidad de la carga de trabajo en el entorno informático de Contoso, se da cuenta de que debe centrarse en la orquestación de contenedores, en lugar de en la implementación de contenedores individuales. Aunque esto último ofrece simplicidad, carece de escalabilidad y resistencia. En la investigación de la orquestación de contenedores, identificó rápidamente Kubernetes y AKS como los candidatos más adecuados para la implementación planeada.
¿Qué es Kubernetes?
Kubernetes es una plataforma de código abierto extensible y basada en Linux para orquestar cargas de trabajo contenedorizadas. Para garantizar la resistencia, una implementación típica de Kubernetes consta de varios servidores en clúster, a los que se conoce como nodos. Algunos de ellos forman un plano de control, responsable de administrar los nodos restantes, en el que se implementan las cargas de trabajo. Para Kubernetes, estas cargas de trabajo constan de instancias de aplicaciones en contenedor denominadas pods.
Nota:
Uno de los componentes principales del plano de control es API Server, que proporciona la interfaz para configurar y administrar clústeres de Kubernetes.
Nota:
Un pod corresponde aproximadamente a un contenedor, aunque puede incluir varios contenedores estrechamente acoplados que se ejecutan en el mismo nodo de clúster.
Normalmente, los pods no tienen estado ni ofrecen ninguna característica de resistencia inherente. Para implementar alta disponibilidad y redundancia, puede aprovisionarlos mediante implementaciones. Normalmente, una implementación consta de varias réplicas de pods que comparten la misma configuración y ejecutan contenedores basados en la misma imagen. Kubernetes administra automáticamente el ciclo de vida de los pods dentro de una implementación, volviendo a crear aquellos con errores en los nodos de clúster disponibles de una manera óptima.
Las implementaciones también simplifican las actualizaciones de las imágenes de contenedores que se ejecutan en pods sin que ello afecte a la disponibilidad de la carga de trabajo en contenedores. Al definir presupuestos de interrupción, puede controlar el número de réplicas de pods que deben permanecer en línea a lo largo del proceso de actualización.
Para la conectividad directa a pods, puede implementar otro tipo de recurso de Kubernetes conocido como servicio. Por ejemplo, un servicio permite configurar la conectividad externa con equilibrio de carga desde Internet a un servicio web hospedado en un grupo de pods como parte de la misma implementación.
Kubernetes ofrece la posibilidad de aislar pods, servicios, implementaciones y muchos otros componentes del clúster en espacios de nombres. Los espacios de nombres forman límites lógicos, los cuales permiten restringir el acceso para crear, ver o administrar recursos en el clúster.
¿Cuáles son las principales ventajas de Kubernetes?
Kubernetes proporciona un modelo de administración coherente para un entorno de varios contenedores que usa recursos compartidos de proceso, redes y almacenamiento. Ofrece un modo declarativo de implementación y administración en el que se describe la configuración deseada y se conserva la implementación para el plano de control de Kubernetes.
Nota:
Con el modo declarativo de administración, puede usar archivos de manifiesto con formato YAML para controlar el aprovisionamiento, la modificación y la eliminación de componentes de Kubernetes, como pods, servicios e implementaciones. También puede usar colecciones empaquetadas de archivos YAML, conocidas como gráficos de Helm. Helm es un administrador de paquetes para Kubernetes y facilita la implementación de cargas de trabajo más complejas en clústeres de Kubernetes.
Además, Kubernetes ofrece ventajas como:
- Recuperación automática de pods.
- Escalado automático de pods.
- Escalado automático de nodos de clúster en escenarios virtualizados.
- Actualización gradual y reversión automatizadas de implementaciones de pods.
- Detección automática de nuevas implementaciones de pods.
- Equilibrio de carga entre pods que ejecutan las mismas cargas de trabajo.
Kubernetes permite tratar un grupo de servidores físicos o virtuales como un recurso de proceso unificado, optimizando simultáneamente los servidores mediante la agilidad y la densidad de las cargas de trabajo en contenedores. Aunque Kubernetes simplifica la administración de contenedores, su administración implica muchas tareas de configuración, administración y mantenimiento:
- Algunos aspectos, como la implementación, el escalado, el equilibrio de carga, el registro y la supervisión, son opcionales. Deberá identificar e implementar personalmente la configuración óptima para satisfacer sus necesidades específicas.
- Kubernetes no proporciona middleware, marcos de procesamiento de datos ni bases de datos de forma nativa. Aun así, tiene la opción de implementar cualquiera de las funcionalidades correspondientes mediante el uso de contenedores.
- Debe mantener el entorno de Kubernetes. Por ejemplo, debe administrar las actualizaciones del sistema operativo y de Kubernetes. También debe administrar los recursos de hardware disponibles para los nodos de clúster, como las redes, la memoria y el almacenamiento.
Nota:
Las ofertas de Kubernetes administrado, como AKS, minimizan o incluso eliminan algunos de estos desafíos.