Arquitectura de línea de base de Azure Kubernetes Service (AKS) para AKS en Azure Local

Azure Kubernetes Service (AKS)
Azure Local
Azure Arc

En este escenario se muestra cómo diseñar e implementar una arquitectura de línea base para Microsoft Azure Kubernetes Service (AKS) que se ejecuta en Azure Local.

En este artículo se incluyen recomendaciones para la red, la seguridad, la identidad, la administración y la supervisión del clúster en función de los requisitos empresariales de una organización.

Importante

La información de este artículo se aplica a AKS en Azure Local y AKS en Windows Server. La versión más reciente de AKS se ejecuta en el sistema operativo Azure Stack HCI, versión 23H2. Para más información sobre la versión más reciente, consulte AKS en Azure Local.

Arquitectura

Diagrama que muestra una arquitectura de línea de base para Azure Kubernetes Service en Azure Local.

Descargue un archivo de Visio de esta arquitectura.

Componentes

  • Los siguientes componentes se instalan en el perímetro o en el entorno local:

    • Azure Local es una solución de clúster de infraestructura hiperconvergida (HCI) que hospeda cargas de trabajo virtualizadas de Linux y Windows y su almacenamiento en un entorno local híbrido. Una instancia local de Azure consta de un clúster que puede oscilar entre 1 y 16 nodos. En esta arquitectura, Azure Local proporciona la infraestructura física para ejecutar clústeres de AKS, lo que permite el proceso local y el almacenamiento con la integración de Azure.

    • El puente de recursos de Azure Arc es una máquina virtual (VM) de alta disponibilidad que se ejecuta en Azure Local. En esta arquitectura, implementa y administra varios clústeres de AKS en Azure Local. Actúa como plano de control para las operaciones híbridas de Kubernetes.

    • AKS en Azure Local es una implementación local de AKS que automatiza la ejecución de aplicaciones en contenedor a escala. En esta arquitectura, cada AKS en el clúster local de Azure incluye nodos de plano de control de alta disponibilidad y nodos de trabajo. Las aplicaciones en contenedores se ejecutan en los nodos de trabajo del clúster de AKS. Para lograr el aislamiento de aplicaciones, puede implementar hasta 32 clústeres de AKS. El clúster de AKS consta de los siguientes componentes:

      • El plano de control se ejecuta en Azure Linux e incluye componentes del servidor de API que interactúan con la API de Kubernetes. También usa etcd, que es un almacén de clave-valor distribuido, para almacenar toda la configuración y los datos del clúster.

      • Los nodos de trabajo se ejecutan en el sistema operativo Linux de Azure o en el sistema operativo Windows Server. Alojan aplicaciones contenerizadas en pods. Los pods representan una única instancia de su aplicación y normalmente se corresponden en una proporción de uno a uno con un contenedor. Sin embargo, algunos pods incluyen varios contenedores. Las implementaciones constan de uno o varios pods idénticos. Los pods y las implementaciones se agrupan lógicamente en un espacio de nombres, que define el acceso a la administración de estos recursos.

  • Los siguientes componentes se instalan en Azure:

    • Azure Arc es un servicio basado en la nube que extiende el modelo de administración basado en Azure Resource Manager a recursos que no son de Azure, incluidas máquinas virtuales que no son de Azure, clústeres de Kubernetes y bases de datos en contenedores. En esta arquitectura, permite la gobernanza, la supervisión y la aplicación de directivas centralizadas para los clústeres de AKS que se ejecutan en Azure Local.

    • Azure Automation es un servicio de configuración y automatización basado en la nube. En esta arquitectura, admite la administración coherente de clústeres y cargas de trabajo de AKS en entornos híbridos a través de flujos de trabajo automatizados.

    • Azure Monitor es un servicio basado en la nube que maximiza la disponibilidad y el rendimiento de las aplicaciones y servicios con una completa solución que permite recopilar y analizar datos de telemetría en entornos locales y en la nube, así como actuar sobre estos. En esta arquitectura, supervisa el estado y el rendimiento de los clústeres de AKS y las cargas de trabajo de contenedor que se ejecutan en Azure Local.

    • Azure Policy es un servicio basado en la nube que ayuda a aplicar los estándares de la organización y evaluar el cumplimiento a escala mediante la evaluación de Azure, incluidos los recursos habilitados por Azure Arc, a las propiedades de esos recursos a las reglas de negocio. En esta arquitectura, Azure Policy para Kubernetes aplica directivas a clústeres de AKS y cargas de trabajo de Kubernetes para garantizar prácticas de configuración y seguridad coherentes.

    • Defender for Cloud es un sistema unificado de administración de seguridad de infraestructura que refuerza la posición de seguridad de los centros de datos y proporciona protección contra amenazas avanzada en las cargas de trabajo híbridas en la nube y en el entorno local. En esta arquitectura, Defender for Cloud protege los clústeres y cargas de trabajo de AKS en Azure Local mediante la supervisión de amenazas y la aplicación de procedimientos recomendados de seguridad.

Detalles del escenario

Posibles casos de uso

  • Implemente cargas de trabajo basadas en contenedores y de alta disponibilidad en una implementación de Kubernetes local de AKS.

  • Automatice la ejecución de aplicaciones contenedorizadas a escala.

  • Menor costo total de propiedad (TCO) mediante soluciones certificadas por Microsoft, automatización basada en la nube, administración centralizada y supervisión centralizada.

Hardware certificado

Use hardware certificado local de Azure, que proporciona la configuración de arranque seguro, interfaz de firmware extensible de United (UEFI) y módulo de plataforma segura (TPM) de fábrica. Los requisitos de proceso dependen de la aplicación y del número total de nodos del plano de control y nodos de trabajo en todos los clústeres de AKS que se ejecutan en Azure Local. Use varios nodos físicos para la implementación de Azure Local para lograr una alta disponibilidad. Todos los servidores deben ser del mismo fabricante y modelo y usar procesadores compatibles con la traducción de direcciones de segundo nivel de Intel Nehalem de 64 bits, AMD EPYC o versiones posteriores compatibles.

Requisitos de red

Kubernetes proporciona una capa de abstracción a las redes mediante la conexión de los nodos de Kubernetes a la red de superposición virtual. También proporciona conectividad de entrada y salida para los pods a través del componente kube-proxy.

Esta arquitectura usa una red de superposición virtual que asigna direcciones IP mediante redes de direcciones IP estáticas. Esta arquitectura usa Calico como proveedor de interfaz de red de contenedor. Las redes de direcciones IP estáticas requieren grupos de direcciones predefinidos para todos los objetos de la implementación. Agrega ventajas adicionales y garantiza que la carga de trabajo y la aplicación siempre son accesibles. Se usa un grupo de direcciones IP independiente para asignar direcciones IP a los servicios de Kubernetes.

Las especificaciones de red se definen como redes lógicas en Azure Local. Antes de crear las redes lógicas en Azure Local, consulte Requisitos de red y planeamiento de direcciones IP.

Requisitos de almacenamiento

Use en todos los servidores del clúster los mismos tipos de unidades, es decir, que sean del mismo tamaño y modelo. Azure Local funciona con datos adjuntos avanzados de tecnología avanzada conectados directamente, interfaz de sistema de equipo pequeño conectado en serie, memoria rápida no volátil o unidades de memoria persistentes conectadas físicamente a un servidor cada uno. En el caso de los volúmenes de clúster, HCI usa tecnología de almacenamiento definida por software como Espacios de almacenamiento directo para combinar las unidades físicas en el grupo de almacenamiento para la tolerancia a errores, la escalabilidad y el rendimiento. Las aplicaciones que se ejecutan en AKS en Azure Local suelen esperar que estén disponibles las siguientes opciones de almacenamiento:

  • Los volúmenes representan una manera de almacenar, recuperar y conservar datos entre pods y a través del ciclo de vida de la aplicación.

  • Los volúmenes persistentes son un recurso de almacenamiento que la API de Kubernetes crea y administra. Pueden existir más allá de la vida útil de un pod concreto.

Considere la posibilidad de definir clases de almacenamiento para diferentes niveles y ubicaciones, con el fin de optimizar el costo y el rendimiento. Las clases de almacenamiento admiten el aprovisionamiento dinámico de volúmenes persistentes y definen el valor de reclaimPolicy para especificar la acción del recurso de almacenamiento subyacente para administrar volúmenes persistentes cuando se elimina el pod.

Creación y administración de AKS en Azure Local

Debe crear y administrar AKS en Azure Local como cualquier otro recurso de Azure que administre. Puede usar Azure Portal, la CLI de Azure, las plantillas de Azure Resource Manager (plantillas de ARM) o Bicep.

El servicio Kubernetes habilitado para Azure Arc proporciona la representación de Resource Manager de AKS en una instancia local de Azure. Al crear un clúster de AKS en Azure Local, los agentes de Azure Arc se implementan automáticamente en un espacio de nombres de Kubernetes para recopilar registros y métricas y recopilar metadatos del clúster, versión de Kubernetes y recuento de nodos.

Las siguientes recomendaciones sirven para la mayoría de los escenarios. Sígalas a menos que tenga un requisito concreto que las invalide. Los siguientes servicios de Azure se deben implementar en la misma región de Azure que el clúster de AKS:

  • Use la extensión MetalLB para implementar un equilibrador de carga MetalLB en el clúster de AKS para el equilibrio de carga L2.

  • Habilite Azure Monitor Container Insights para supervisar el rendimiento de las cargas de trabajo de contenedor que se ejecutan en grupos de nodos de Linux y Windows. Recopila métricas de memoria y procesador de controladores, nodos y contenedores a través de la API de métricas. Mediante Container Insights, puede identificar el uso de memoria y procesador, detectar el rendimiento general del clúster de Kubernetes, comprender el comportamiento del clúster y configurar alertas para la supervisión proactiva.

  • Utilice las capacidades de automatización disponibles para la gestión integral. AKS proporciona una amplia gama de características de automatización, incluidas las actualizaciones del sistema operativo y las actualizaciones de pila completa, como el firmware y los controladores de proveedores y asociados locales de Azure. Puede ejecutar Windows PowerShell localmente desde una de las máquinas locales de Azure o de forma remota desde un equipo de administración. La integración con Azure Automation y Azure Arc admite varios escenarios de automatización para cargas de trabajo virtualizadas y en contenedores .

  • Aplique la gobernanza con Azure Policy para aplicar controles de recursos a escala. Azure Policy amplía Gatekeeper v3, que es un webhook del controlador de admisión para Open Policy Agent, para aplicar de forma centralizada protecciones sobre componentes de AKS, como pods, contenedores y espacios de nombres.

  • Implemente aplicaciones de forma coherente mediante configuraciones de Flux v2 y Azure Policy para Kubernetes para lograr implementaciones escalables controladas por directivas. Puede seleccionar una definición de directiva integrada y crear asignaciones de directiva que tengan parámetros específicos para la configuración de Flux. Para admitir la separación de problemas, cree varias asignaciones que tengan diferentes configuraciones de Flux que apunten a orígenes independientes, como un repositorio de Git para administradores de clústeres y otro repositorio para los equipos de aplicaciones.

Consideraciones

Estas consideraciones implementan los pilares del Azure Well-Architected Framework, que es un conjunto de principios rectores que puede utilizar para mejorar la calidad de una carga de trabajo. Para obtener más información, consulte Well-Architected Framework.

Confiabilidad

La confiabilidad ayuda a garantizar que la aplicación pueda cumplir los compromisos que realice para sus clientes. Para obtener más información, consulte Lista de comprobación de revisión de diseño para confiabilidad.

  • Implemente tres a cinco nodos de plano de control y varios nodos de trabajo en el clúster de Kubernetes para cumplir los requisitos mínimos de disponibilidad de las aplicaciones.

  • Revisar los requisitos para los clústeres de conmutación por error. Las implementaciones de AKS usan clústeres de conmutación por error y migración en vivo para conseguir una alta disponibilidad y tolerancia a errores. La migración en vivo es una característica de Hyper-V que permite mover de forma transparente máquinas virtuales en ejecución de un host de Hyper-V a otro host sin tiempo de inactividad percibido.

  • Configure los despliegues para usar funciones de Kubernetes, como despliegues, configuración de afinidad y ReplicaSets, para garantizar que los pods sean resilientes ante escenarios de interrupción.

  • Limite el uso de imágenes de contenedor públicas y descargúelas solo desde registros de contenedores cuyo acuerdo de nivel de servicio controle, como Azure Container Registry.

Seguridad

La seguridad proporciona garantías contra ataques deliberados y el uso indebido de sus valiosos datos y sistemas. Para obtener más información, consulte Lista de comprobación de revisión de diseño para seguridad.

Céntrese en toda la pila protegiendo tanto el host como sus contenedores.

Seguridad de la infraestructura

  • Use hardware certificado local de Azure que proporcione la configuración de arranque seguro, UEFI y TPM de fábrica. Estas tecnologías, combinadas con la seguridad basada en virtualización, ayudan a proteger las cargas de trabajo sensibles a la seguridad. Para más información sobre las soluciones validadas, consulte Soluciones locales de Azure.

  • Use arranque seguro para asegurarse de que el servidor solo arranca el software en el que confía un fabricante de equipos originales.

  • Use UEFI para controlar el proceso de arranque del servidor.

  • Use TPM para almacenar claves criptográficas y para aislar todas las funciones relacionadas con la seguridad basadas en hardware.

  • Use el Cifrado de unidad BitLocker para cifrar los volúmenes de Espacios de almacenamiento directo en reposo.

  • Use Defender for Cloud para administrar la configuración de seguridad de los servidores y clústeres. Proporciona protección contra amenazas para los clústeres de Kubernetes habilitados para Azure Arc. La extensión Microsoft Defender for Containers recopila datos de los nodos del clúster y los envía al servicio de back-end de Defender for Containers en la nube para su posterior análisis.

  • Use el control de acceso basado en rol de Azure (Azure RBAC) para las asignaciones de roles y para administrar el acceso al clúster de AKS.

  • Use la identidad de carga de trabajo para proteger y administrar las identidades para acceder a los recursos de Azure desde los pods de carga de trabajo.

  • AKS incluye el cifrado de secretos etcd mediante un complemento de servicio de administración de claves (KMS). Todos los clústeres de AKS tienen un complemento KMS integrado habilitado de forma predeterminada. Este complemento genera la clave de cifrado y la rota automáticamente cada 30 días.

Seguridad de la aplicación

  • Use la extensión del proveedor secretos de Azure Key Vault en la instancia local de AKS en Azure para proteger aún más los secretos que usan las distintas aplicaciones almacenándolas en Key Vault.

  • Utilice Azure Policy para Kubernetes para aplicar directivas de seguridad del clúster, como prohibir los pods con privilegios.

  • Use una instancia de Container Registry que contenga el examen de vulnerabilidades en su repositorio de contenedores.

Seguridad del contenedor

  • Refuerce el entorno del anfitrión y del demonio eliminando los servicios innecesarios.

  • Mantenga los secretos fuera de las imágenes y móntelos solo a través del motor de orquestación de contenedores.

  • Proteja las imágenes de una instancia de Container Registry que admita el análisis de vulnerabilidades y Azure RBAC.

  • Use el aislamiento de los contenedores y evite ejecutar contenedores en modo con privilegios para evitar que los atacantes escalen privilegios si un contenedor está en peligro.

Optimización de costos

La optimización de costos se centra en formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la optimización de costes.

Excelencia operativa

La excelencia operativa abarca los procesos de las operaciones que implementan una aplicación y la mantienen en ejecución en producción. Para obtener más información, consulte la Lista de comprobación de revisión de diseño para la excelencia operativa.

  • Infraestructura como código: Use plantillas de ARM, Bicep o Terraform para automatizar la implementación de clústeres a escala. Use Azure Portal para explorar las opciones disponibles y admitidas para la creación del clúster y exportar las selecciones como plantilla. Revise los módulos comprobados de Azure para obtener una opción de implementación escalable. Para más información, consulte el módulo de servicio de contenedor híbrido en GitHub.

  • Azure Arc: Integración con Azure Arc o servicios de Azure, como Azure Monitor y Log Analytics, que proporcionan funcionalidades adicionales de administración, mantenimiento y resistencia.

  • GitOps: En lugar de configurar manualmente los componentes de Kubernetes, use herramientas automatizadas para aplicar configuraciones a un clúster de Kubernetes porque estas configuraciones están activadas en un repositorio de origen. Este proceso se conoce a menudo como GitOps. Entre las soluciones comunes de GitOps para Kubernetes se incluyen Flux y Argo CD. En esta arquitectura, se recomienda usar la extensión de GitOps proporcionada por Microsoft, que se basa en Flux.

Eficiencia del rendimiento

La eficiencia del rendimiento hace referencia a la capacidad de escalado de la carga de trabajo para satisfacer las demandas de los usuarios de forma eficaz. Para obtener más información, consulte Lista de comprobación de revisión de diseño para la eficiencia del rendimiento.

  • Use hardware certificado local de Azure para mejorar el rendimiento y el tiempo de actividad de la aplicación, la administración simplificada y las operaciones, y el TCO inferior.

  • Conozca los límites de AKS en Azure Local. Microsoft admite AKS en implementaciones locales de Azure que tienen un máximo de 16 servidores físicos por clúster, 32 clústeres de Kubernetes y 200 máquinas virtuales.

  • Determinar los requisitos de AKS en Azure Local en función del número de nodos del plano de control, nodos de trabajo y clústeres de AKS. Para ajustar correctamente el tamaño del hardware, anticipe el número de pods, contenedores y nodos de trabajo necesarios para cada clúster de AKS. Reserve al menos 15% de capacidad local de Azure para dar cabida a errores planeados y no planeados.

    Para lograr una eficiencia del rendimiento, use los recursos informáticos de una manera que cumpla los requisitos del sistema a la vez que mantiene esa eficiencia a medida que evolucionan los cambios y las tecnologías de la demanda. Como regla general, si un nodo se queda sin conexión, ya sea debido al mantenimiento o a un error inesperado, los nodos restantes deben tener suficiente capacidad para controlar la mayor carga.

  • Revise la lógica de selección de ubicación de nodos de AKS. AKS en Azure Local distribuye los nodos de trabajo para cada grupo de nodos de un clúster de AKS mediante la lógica de selección de ubicación local de Azure mediante conjuntos de disponibilidad.

  • Planee las reservas de direcciones IP para configurar clústeres de AKS y servicios de Kubernetes.

  • Implemente la optimización del rendimiento de la red para la asignación del ancho de banda del tráfico.

  • Use la aceleración de unidades de procesamiento de gráficos para cargas de trabajo extensas.

Colaboradores

Microsoft mantiene este artículo. Los colaboradores siguientes escribieron este artículo.

Autores principales:

  • Paramesh Babu | Administrador de programas principal
  • Lisa DenBeste | Administrador de programas de administración de proyectos
  • Kenny Harder | Jefe de proyecto
  • Mike Kostersitz | Responsable principal del administrador de programas
  • Meg Olsen | Principal
  • Nate Waters | Responsable de marketing de producto

Otro colaborador:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Paso siguiente