Optimización de los costos en Azure Kubernetes Service (AKS)

La optimización de costes consiste en maximizar el valor de los recursos, a la vez que se minimizan los gastos innecesarios en el entorno de nube. Este proceso implica identificar opciones de configuración rentables e implementar procedimientos recomendados para mejorar la eficacia operativa. Un entorno de AKS se puede optimizar para minimizar el coste, teniendo en cuenta los requisitos de rendimiento y fiabilidad.

En este artículo, aprenderá lo siguiente:

  • Selección estratégica de infraestructura
  • Cambio de tamaño dinámico y escalado automático
  • Aprovechamiento de descuentos de Azure para ahorros sustanciales
  • Supervisión holística y prácticas de FinOps

Preparar el entorno de aplicaciones

Evaluación de la familia de SKU

Es importante evaluar los requisitos de recursos de la aplicación antes de la implementación. Las cargas de trabajo de desarrollo pequeñas tienen diferentes necesidades de infraestructura que las cargas de trabajo listas para producción grandes. Aunque una combinación de configuraciones de CPU, memoria y capacidad de red influye en gran medida en la rentabilidad de una SKU, tenga en cuenta los siguientes tipos de máquina virtual:

  • Azure Spot Virtual Machines - Grupos de nodos de acceso puntual están respaldados por conjuntos de escalado de Azure Spot Virtual Machines e implementados en un único dominio de error sin garantías de alta disponibilidad ni acuerdo de nivel de servicio. Las máquinas virtuales de acceso puntual le permiten aprovechar la capacidad de Azure no utilizada con descuentos significativos (hasta un 90 % en comparación con los precios de pago por uso). Si Azure necesita recuperar la capacidad, la infraestructura de Azure expulsará los nodos de acceso puntual. Mejor para entornos de desarrollo y pruebas, cargas de trabajo que pueden controlar interrupciones como trabajos de procesamiento por lotes y cargas de trabajo con tiempo de ejecución flexible.
  • procesadores basados en Ampere Altra Arm (ARM64): las máquinas virtuales ARM64 son eficaces y rentables, pero no afectan al rendimiento. Con la compatibilidad con el grupo de nodos AMR64 en AKS, puede crear nodos de agente de Ubuntu ARM64 e incluso mezclar nodos de arquitectura Intel y ARM dentro de un clúster. Estas máquinas virtuales ARM están diseñadas para ejecutar cargas de trabajo dinámicas y escalables de forma eficaz y pueden ofrecer hasta un 50 % mejor rendimiento de precio que las máquinas virtuales comparables basadas en x86 para cargas de trabajo de escalado horizontal. Mejor para servidores web o de aplicaciones, bases de datos de código abierto, aplicaciones nativas de la nube, servidores de juegos, etc.
  • SKU optimizadas para GPU: en función de la naturaleza de la carga de trabajo, considere la posibilidad de usar SKU de máquina virtual optimizadas para proceso, optimizadas para memoria, optimizadas para almacenamiento o incluso optimizadas para unidades de procesamiento gráfico (GPU). Los tamaños de máquinas virtuales para GPU son máquinas virtuales especializadas que están disponibles con GPU individuales, múltiples y fraccionarias. Los grupos de nodos de Linux habilitados para GPU en AKS son los mejores para cargas de trabajo de proceso intensivo, como la representación de gráficos, el entrenamiento de modelos grandes y la inferencia.

Nota:

El coste del proceso varía entre regiones. Al seleccionar una región menos costosa para ejecutar cargas de trabajo, tenga en cuenta el posible impacto de la latencia, así como los costes de transferencia de datos. Para obtener más información sobre las SKU de máquina virtual y sus características, consulte Tamaños de las máquinas virtuales en Azure.

Use las configuraciones preestablecidas de clúster

La selección de la SKU de máquina virtual correcta, las regiones, el número de nodos y otras opciones de configuración pueden ser difíciles por adelantado. La configuración preestablecida del clúster en Azure Portal descarga este desafío inicial proporcionando configuraciones recomendadas para diferentes entornos de aplicación que tienen en cuenta los costes y tienen un buen rendimiento. El valor preestablecido Desarrollo/pruebas es mejor para desarrollar nuevas cargas de trabajo o probar las cargas de trabajo existentes. El valor preestablecido Economía de producción es mejor para atender el tráfico de producción de una manera consciente de los costos si las cargas de trabajo pueden tolerar interrupciones. Las características no críticas están desactivadas de forma predeterminada y los valores preestablecidos se pueden modificar en cualquier momento.

Considere la posibilidad de multiinquilino

AKS ofrece flexibilidad en la forma en que ejecuta clústeres de múltiples inquilinos y aísla los recursos. Para un multiinquilino descriptivo, los clústeres y la infraestructura se pueden compartir entre equipos y unidades de negocio a través de aislamiento lógico. Los espacios de nombres de Kubernetes forman el límite de aislamiento lógico para las cargas de trabajo y los recursos. El uso compartido de la infraestructura reduce la sobrecarga de administración de clústeres, al tiempo que mejora el uso de recursos y la densidad de pods dentro del clúster. Para obtener más información sobre el multiinquilino en AKS y determinar si es adecuado para sus necesidades organizativas, consulte consideraciones de AKS para multiinquilino y Diseño de clústeres para multiinquilino.

Advertencia

Los entornos de Kubernetes no son del todo seguros para el multiinquilino hostil. Si no se puede confiar en cualquier inquilino de la infraestructura compartida, se necesita un planeamiento adicional para evitar que los inquilinos afecten a la seguridad de otros servicios.

Considere la posibilidad de límites de aislamiento físico. En este modelo, los equipos o las cargas de trabajo se asignan a su propio clúster. La administración agregada y la sobrecarga financiera serán una contrapartida.

Compilación de aplicaciones nativas en la nube

Hacer que el contenedor sea lo más delgado posible

Un contenedor delgado hace referencia a la optimización del tamaño y la superficie de recursos de la aplicación en contenedor. Compruebe que la imagen base es mínima y solo contiene las dependencias necesarias. Quite las bibliotecas y paquetes innecesarios. Una imagen de contenedor más pequeña acelerará los tiempos de implementación y aumentará la eficacia de la operación de escalado. Un paso más allá, el streaming de artefactos en AKS permite transmitir imágenes de contenedor desde Azure Container Registry (ACR). Extrae solo la capa necesaria para el startup inicial del pod, lo que reduce el tiempo de extracción de imágenes más grandes de minutos a segundos.

Aplicación de cuotas de recursos

Las cuotas de recursos ofrecen una manera de reservar y limitar los recursos para un proyecto o equipo de desarrollo. Las cuotas se definen en un espacio de nombres y se pueden establecer en recursos de proceso, recursos de almacenamiento y recuentos de objeto. Al definir cuotas de recursos, se impide que los espacios de nombres individuales consuman más recursos de los asignados. Esto es especialmente importante para los clústeres multiinquilino en los que los equipos comparten la infraestructura.

Uso de la detención de inicio del clúster

Los clústeres pequeños de desarrollo y pruebas, cuando se dejan desatendidos, pueden darse cuenta de grandes cantidades de gastos innecesarios. Desactive los clústeres que no necesitan ejecutarse en todo momento mediante inicio y detención del clúster. Al hacerlo, se apagan todos los grupos de nodos de usuario y del sistema, por lo que no pagará por un proceso adicional. Todos los objetos y el estado del clúster se mantendrán al iniciar el clúster de nuevo.

Usar reservas de capacidad

La reserva de capacidad permite reservar capacidad de proceso en una región de Azure o zona de disponibilidad durante cualquier período de tiempo. La capacidad reservada estará disponible para su uso inmediato hasta que se elimine la reserva. Asociar un grupo de reservas de capacidad existente a un grupo de nodos garantiza la capacidad asignada para el grupo de nodos y le ayuda a evitar posibles picos de precios a petición durante períodos de alta demanda de proceso.

Supervisión del entorno y el gasto

Aumento de la visibilidad con Microsoft Cost Management

Microsoft Cost Management ofrece un amplio conjunto de funcionalidades para ayudar con el presupuesto en la nube, la previsión y la visibilidad de los costes tanto dentro como fuera del clúster. La visibilidad adecuada es esencial para descifrar las tendencias de gasto, identificar las oportunidades de optimización y aumentar la responsabilidad entre los desarrolladores de aplicaciones y los equipos de plataforma. Habilite el complemento de análisis de costes de AKS para el desglose pormenorizados de los costes del clúster por las construcciones de Kubernetes junto con las categorías proceso, red y almacenamiento de Azure.

Azure Monitor

Si va a ingerir datos de métricas a través de Container Insights, se recomienda migrar a métricas administradas de Prometheus, lo que ofrece una reducción significativa de los costes. Puede deshabilitar las métricas de Container Insights mediante la regla de recopilación de datos (DCR) e implementar el complemento Prometheus administrado , que admite la configuración a través de Azure Resource Manager, la CLI de Azure, Azure Portal y Terraform.

Si se basa en la ingesta de registros, también se recomienda usar la API de registros básicos para reducir los costes de Log Analytics. Para más información, consulte procedimientos recomendados de Azure Monitor y administración de costes para Container Insights.

Optimizar cargas de trabajo mediante el escalado automático

Habilitar escalado automático de aplicaciones

Escalado vertical automático de pods

Las solicitudes y los límites que son significativamente mayores que el uso real pueden dar lugar a cargas de trabajo sobreaprovisionadas y recursos desperdiciados. Por el contrario, las solicitudes y los límites que son demasiado bajos pueden dar lugar a problemas de límites y carga de trabajo debido a la falta de memoria. Escalador automático de pods verticales (VPA) permite ajustar los recursos de CPU y memoria necesarios para los pods. El VPA proporciona valores recomendados para solicitudes de CPU y memoria y límites basados en el uso histórico de contenedores, que puede establecer manualmente o actualizar automáticamente. Mejor para aplicaciones con demandas de recursos fluctuantes.

Escalado automático de pods horizontal

El escalador automático de pods horizontal (HPA) escala dinámicamente el número de réplicas de pods en función de métricas observada s como el uso de CPU y memoria. Durante períodos de alta demanda, HPA se escala horizontalmente y agrega más réplicas de pod para distribuir la carga de trabajo. Durante períodos de baja demanda, el HPA se escala, lo que reduce el número de réplicas para conservar los recursos. Mejor para aplicaciones con demandas de recursos predecibles.

Advertencia

No debe usar el VPA junto con el HPA en las mismas métricas de CPU o memoria. Esta combinación puede causar conflictos, ya que los dos escaladores automáticos intentan responder a los cambios de la demanda usando las mismas métricas. Sin embargo, puede usar el VPA para la CPU o la memoria junto con el HPA para métricas personalizadas, con el fin de evitar que se solapen y asegurarse de que cada escalador automático se centra en aspectos diferentes del escalado de la carga de trabajo.

Escalado automático controlado por eventos de Kubernetes

complemento de Escalabilidad automática controlada por eventos de Kubernetes (KEDA) proporciona flexibilidad adicional para escalar en función de varias métricas controladas por eventos que se alinean con el comportamiento de la aplicación. Por ejemplo, para una aplicación web, KEDA puede supervisar el tráfico de solicitudes HTTP entrantes y ajustar el número de réplicas de pod para asegurarse de que la aplicación sigue respondiendo. Para procesar trabajos, KEDA puede escalar la aplicación en función de la longitud de la cola de mensajes. Se proporciona compatibilidad administrada para todos los escaladores de Azure.

Habilitar escalado automático de la infraestructura

Escalado automático del clúster

Para mantenerse al día con la demanda de aplicaciones, el Escalador automático de clústeres busca pods que no se pueden programar debido a restricciones de recursos y escala el número de nodos del grupo de nodos en consecuencia. Cuando los nodos no tienen pods en ejecución, el escalador automático de clústeres reducirá verticalmente el número de nodos. Tenga en cuenta que la configuración del perfil del escalador automático del clúster se aplica a todos los grupos de nodos habilitados para el escalador automático del clúster. Para más información, consulte procedimientos recomendados y consideraciones del escalador automático de clústeres.

Aprovisionamiento automático de nodos

Las cargas de trabajo complicadas pueden requerir varios grupos de nodos con distintas configuraciones de tamaño de máquina virtual para adaptarse a los requisitos de CPU y memoria. La selección y administración precisas de varias configuraciones de grupo de nodos agrega complejidad y sobrecarga operativa. El aprovisionamiento automático de nodos (NAP) simplifica el proceso de selección de SKU y decide, en función de las necesidades de recursos de los pods pendientes, la configuración óptima de las máquinas virtuales para ejecutar cargas de trabajo de la forma más eficiente y rentable.

Ahorre con descuentos de Azure

Reservas de Azure

Si la carga de trabajo es predecible y existe durante un período de tiempo prolongado, considere la posibilidad de comprar una Azure Reservations para reducir aún más los costes de los recursos. Azure Reservations opera en un período de un año o tres años, ofreciendo hasta un 72 % de descuento en comparación con los precios de pago por uso para el proceso. Las reservas se aplican automáticamente a los recursos coincidentes. Mejor para cargas de trabajo que están comprometidas a ejecutarse en las mismas SKU y regiones durante un período de tiempo prolongado.

Plan de ahorro de Azure

Si tiene un gasto coherente, pero el uso de recursos dispares entre SKU y regiones hace que Azure Reservations sea inviable, considere la posibilidad de comprar un plan de ahorro de Azure. Al igual que Azure Reservations, los planes de ahorro de Azure operan en un período de un año o tres años y se aplican automáticamente a los recursos dentro del ámbito de las ventajas. Se compromete a gastar una cantidad fija por hora en los recursos de proceso independientemente de la SKU o región. Mejor para cargas de trabajo que usan diferentes recursos o regiones de centros de datos diferentes.

Ventaja híbrida de Azure

Ventaja híbrida de Azure para Azure Kubernetes Service (AKS) le permite maximizar las licencias locales sin coste adicional. Use las licencias locales aptas que también tengan un Software Assurance (SA) activo o una suscripción apta para obtener máquinas virtuales Windows (VM) en Azure con un coste reducido.

Adopción de FinOps para crear una referencia cultural de ahorro de costes

Operaciones financieras (FinOps) es una materia que combina la responsabilidad financiera con la administración y optimización de la nube. Se centra en impulsar la alineación entre los equipos de finanzas, operaciones e ingeniería para comprender y controlar los costes en la nube. La fundación FinOps ha lanzado varios proyectos importantes:

  • FinOps Framework: un modelo operativo para practicar e implementar FinOps.
  • Especificación FOCUS: una especificación técnica y un estándar abierto para los datos de uso, coste y facturación en la nube en todos los principales servicios de proveedor de nube.

Pasos siguientes

La optimización de costes es un esfuerzo continuo e iterativo. Para más información, revise las siguientes recomendaciones e instrucciones de arquitectura: