¿Qué es Azure Kubernetes Service?

Completado

Empecemos con unas cuantas definiciones y un paseo rápido por Azure Kubernetes Service (AKS). Esta información general lo ayudará a decidir si AKS es una buena plataforma para su estrategia de administración de contenedores.

¿Qué es un contenedor?

Un contenedor es una unidad atómica de software que empaqueta el código, las dependencias y la configuración de una aplicación específica. Los contenedores le permiten dividir las aplicaciones monolíticas en los servicios individuales que componen la solución. Este rediseño de nuestra aplicación nos permite implementar estos servicios dispares mediante contenedores.

Diagrama que muestra el servidor o la aplicación replicados como contenedores para la implementación en la nube.

¿Por qué usar un contenedor?

Supongamos que la solución de seguimiento de recursos incluía tres aplicaciones principales:

  • Un sitio web de seguimiento que incluye mapas e información sobre los activos de los que está realizando el seguimiento.

  • Un servicio de procesamiento de datos que recopila y procesa la información que envían los activos a los que se realiza seguimiento.

  • Una base de datos MSSQL para almacenar la información del cliente capturada del sitio web.

Se da cuenta de que tiene que escalar horizontalmente la solución para satisfacer la demanda de los clientes.

Máquinas virtuales (VM)

Una opción es implementar una nueva VM para cada aplicación hospedada en varias regiones. Posteriormente, copiará las aplicaciones en las nuevas VM. Sin embargo, si lo hace así, deberá encargarse de la administración de cada VM que use.

La sobrecarga de mantenimiento aumenta a medida que se escala. Las versiones y dependencias del sistema operativo (OS) de la VM para cada aplicación deben aprovisionarse y configurarse para que coincidan. Al aplicar actualizaciones para las aplicaciones que afectan al sistema operativo y generan cambios importantes, se toman precauciones. Si aparecen errores durante la actualización, se requiere la reversión de la instalación y esto provoca interrupciones, como tiempo de inactividad o retrasos.

Diagrama que muestra los servidores replicados como máquinas virtuales en la nube y cómo el problema genera preguntas y problemas de migración.

La implementación del diagrama anterior es complicada, en ocasiones propensa a errores y no escala fácilmente servicios únicos. Por ejemplo, quizá observe que no puede escalar fácilmente solo el servicio de almacenamiento en caché utilizado en la aplicación web. Los contenedores ayudan a resolver estos tipos de problemas.

El concepto de contenedor nos ofrece tres ventajas principales:

  1. Inmutabilidad: La naturaleza invariable de un contenedor permite implementarlo y ejecutarlo de forma confiable de un entorno de proceso a otro con el mismo comportamiento. Una imagen de contenedor probada en un entorno de QA es la misma imagen de contenedor implementada en producción.

  2. Tamaño más pequeño: Un contenedor es similar a una VM, pero sin el kernel de cada máquina. En su lugar, comparten un kernel de host. Las VM usan un archivo de imagen grande para almacenar el sistema operativo y la aplicación que desea ejecutar. En cambio, un contenedor solo necesita la aplicación, no un sistema operativo.

  3. Ligero: El contenedor siempre se basa en el sistema operativo instalado del host para los servicios específicos del kernel. La propiedad ligera hace que los contenedores consuman menos recursos, por lo que es posible instalar varios contenedores en el mismo entorno de proceso.

  4. El inicio es rápido: los contenedores se inician en pocos segundos, a diferencia de las máquinas virtuales, que pueden tardar minutos en iniciarse.

Estas ventajas hacen que los contenedores sean una opción popular para los desarrolladores y las operaciones de TI, y por qué muchos cambian de máquinas virtuales.

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

Diagrama que muestra los servidores replicados como varios contenedores en la nube.

Aunque funcionalmente los contenedores son similares a las máquinas virtuales, sus propósitos varían. Un contenedor tiene un ciclo de vida distinto que existe como una máquina temporal. Su estado pasa por las fases pendiente, en ejecución y terminado. Este ciclo de vida hace que los contenedores sean más descartables y afectan la forma en que los desarrolladores y las operaciones de TI piensan en la administración de aplicaciones grandes interconectadas. La administración de contenedores implica la implementación, actualización, supervisión y eliminación de contenedores.

Por ejemplo, supongamos que descubre que al mediodía hay más tráfico de sitio web, por lo que necesita más instancias del servicio de almacenamiento en caché del sitio web para administrar el rendimiento. Planea resolver este problema agregando más contenedores del servicio de almacenamiento en caché.

Ahora es el momento de implementar una nueva versión del servicio de almacenamiento en caché. ¿Cómo se actualizan todos los contenedores? ¿Cómo quitamos todas las versiones anteriores?

Estos tipos de preguntas de equilibrio de carga requieren un sistema para administrar la implementación del contenedor.

¿Qué es Kubernetes?

Kubernetes es una plataforma de código abierto portátil y extensible para la automatización de la implementación, el escalado y la administración de cargas de trabajo en contenedores. Kubernetes abstrae la administración compleja de contenedores y proporciona una configuración declarativa para organizar los contenedores en entornos de proceso distintos. Esta plataforma de orquestación ofrece la misma facilidad de uso y flexibilidad que las ofertas de plataforma como servicio (PaaS) e infraestructura como servicio (IaaS).

Diagrama que muestra los servidores replicados como varios contenedores en un clúster de Kubernetes.

Kubernetes permite ver el centro de datos como un equipo grande. Solo nos tenemos que preocupar por la implementación y el escalado de las aplicaciones, según sea necesario, y no por cómo y dónde se implementan los contenedores.

Estos son algunos aspectos más que debe tener en cuenta sobre Kubernetes:

  • Kubernetes no es una oferta completa de PaaS. Funciona en el nivel de contenedor y ofrece solo un conjunto común de características de PaaS.

  • Kubernetes no es monolítico. No es una aplicación única que está instalada. Algunos aspectos, como la implementación, el escalado, el equilibrio de carga, el registro y la supervisión, son opcionales.

  • Kubernetes no limita los tipos de aplicaciones que se pueden ejecutar. Si la aplicación se puede ejecutar en un contenedor, también se puede ejecutar en Kubernetes.

  • Los desarrolladores deben entender conceptos como la arquitectura de microservicios para hacer un uso óptimo de las soluciones de contenedores.

  • 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.

  • Una implementación de Kubernetes se configura como un clúster. Un clúster consta de al menos una máquina principal o un plano de control y una o varias máquinas de trabajo. En el caso de las implementaciones de producción, la configuración preferida es una implementación de alta disponibilidad con tres a cinco máquinas del plano de control replicadas a las que se hace referencia como nodos o nodos de agente.

Con todas las ventajas que recibe con Kubernetes, es responsable de encontrar la mejor solución que se adapte a sus necesidades para abordar estos aspectos. Tenga en cuenta que es responsable de mantener el clúster 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.

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.

¿Qué es Azure Kubernetes Service (AKS)?

Diagrama que muestra los servidores replicados como varios contenedores en un clúster de Kubernetes de AKS.

AKS administra su entorno hospedado de Kubernetes y facilita la implementación y administración de aplicaciones en contenedores en Azure. El entorno de AKS cuenta con características tales como las actualizaciones automatizadas, la recuperación automática y el escalado sencillo. Azure administra el plano de control del clúster de Kubernetes de forma gratuita. Administre los nodos del agente en el clúster y pague solo por las máquinas virtuales en las que se ejecutan los nodos.

Puede crear y administrar el clúster en Azure Portal o con la CLI de Azure. Al crear el clúster, puede usar plantillas de Resource Manager para automatizar su creación. Con estas plantillas, tiene acceso a características como opciones avanzadas de red, Microsoft Entra Identity y supervisión de recursos. Luego puede configurar desencadenadores y eventos para automatizar la implementación del clúster en varios escenarios.

Con AKS, obtendrá las ventajas de Kubernetes de código abierto sin la complejidad añadida ni la sobrecarga operativa que puede suponer usar solo Kubernetes.