Procedimientos recomendados para la optimización de 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:

  • Comience con AKS Automatic para la optimización de costes integrada.
  • Supervisión holística y prácticas de FinOps.
  • Selección estratégica de infraestructura.
  • Cambio de tamaño dinámico y escalado automático.
  • Aprovechamiento de descuentos de Azure para ahorros sustanciales.

Comience con AKS Automatic para la optimización de costos integrada

AKS Automatic es un modo de clúster que preconfigura muchos de los procedimientos de optimización de costos descritos en este artículo. Si va a crear un nuevo clúster, considere la posibilidad de que AKS Automatic reduzca el esfuerzo de ingeniería, el riesgo de configuración y la sobrecarga operativa en curso que conduce a gastos innecesarios en la nube.

AKS Automatic proporciona las siguientes funcionalidades de optimización de costos de forma predeterminada, sin ninguna configuración adicional:

Capacidad Ventaja del costo
Aprovisionamiento automático de nodos (NAP) Selecciona automáticamente la SKU de máquina virtual más rentable para cada carga de trabajo en función de las solicitudes de recursos de pod reales. Elimina la administración manual del grupo de nodos y el aprovisionamiento excesivo.
Escalado automático de cargas de trabajo (VPA, HPA y KEDA) Todos los autoscaladores de cargas de trabajo están habilitados de manera predeterminada, por lo que los pods y los nodos se ajustan dinámicamente en función de la demanda real en lugar de basarse en previsiones de demanda máxima.
Empaquetado eficiente en contenedores Los pods están programados para maximizar el uso de nodos, lo que reduce el número total de nodos necesarios para atender las cargas de trabajo.
Prometheus administrado Prometheus administrado es la plataforma de métricas predeterminada. Evite el mayor costo de las métricas de Container Insights sin ningún esfuerzo de migración.
Medidas de seguridad de implementación Los controles de Azure Policy imponen las solicitudes y los límites de recursos a todos los pods en modo de aplicación, lo que impide el consumo descontrolado de recursos y el sobreaprovisionamiento a nivel de clúster.

En el caso de las cargas de trabajo que requieren AKS Standard, el resto de este artículo describe cada una de estas prácticas y cómo configurarlas manualmente. Cuando AKS Automatic proporciona una práctica de forma predeterminada, una nota indica que no se necesitan pasos adicionales.

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 cuenta con varios proyectos notables, como el Marco FinOps y la Especificación FOCUS.

Para obtener más información, consulte ¿Qué es FinOps?

Selección de la infraestructura y la configuración del clúster rentables

Evaluación de la familia de SKU

Nota:

Si usa AKS Automatic, el aprovisionamiento automático de nodos (NAP) selecciona automáticamente la SKU de máquina virtual más rentable para cada carga de trabajo en función de sus solicitudes de recursos. No es necesario evaluar, crear ni administrar grupos de nodos manualmente.

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 grandes cargas de trabajo listas para producción. 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 (VM):

Familia de SKU Descripción Más adecuado para
Máquinas virtuales Spot de Azure Los conjuntos de escalado de máquinas virtuales de Azure Spot respaldan los grupos de nodos Spot y se implementan en un único dominio de errores, sin garantías de alta disponibilidad ni de acuerdo de nivel de servicio (SLA). Las máquinas virtuales puntuales permiten aprovechar la capacidad de Azure no utilizada con descuentos significativos (hasta 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. 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 Arm (Arm64) Las máquinas virtuales Arm64 son eficaces y rentables sin poner en peligro el rendimiento. Con la compatibilidad con el conjunto de nodos Arm64 en AKS, puede crear nodos de agente Ubuntu Arm64 y mezclar nodos con arquitecturas Intel y Arm dentro de un clúster. Estas máquinas virtuales están diseñadas para ejecutar cargas de trabajo dinámicas y escalables de forma eficaz y pueden ofrecer hasta 50% un mejor rendimiento de precio que las máquinas virtuales comparables basadas en x86 para cargas de trabajo de escalado horizontal. Servidores web o de aplicaciones, bases de datos de código abierto, aplicaciones nativas de la nube, servidores de juegos, etc.
SKU optimizada 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 optimizadas para GPU. Los tamaños de máquina virtual de GPU son máquinas virtuales especializadas disponibles con GPU únicas, múltiples y fraccionadas. 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.

Revisión de opciones de almacenamiento

Para obtener más información sobre las opciones de almacenamiento y las consideraciones de costos relacionadas, consulte los siguientes artículos:

Use las configuraciones preestablecidas de clúster

Puede ser difícil elegir la SKU de máquina virtual correcta, las regiones, el número de nodos y otras opciones de configuración. Las configuraciones preestablecidas del clúster en el portal de Azure alivian este desafío inicial al proporcionar configuraciones recomendadas para distintos entornos de aplicación, optimizadas para ofrecer un buen rendimiento con costes ajustados. El valor preestablecido Dev/Test es mejor para desarrollar nuevas cargas de trabajo o probar las cargas de trabajo existentes. La configuración predeterminada Economía de producción es la más adecuada para gestionar el tráfico de producción de forma rentable si sus cargas de trabajo pueden tolerar interrupciones. Las características no críticas están desactivadas de forma predeterminada y puede modificar los valores preestablecidos en cualquier momento.

Para obtener un enfoque más completo que va más allá de los valores preestablecidos estáticos, considere la posibilidad de usar AKS Automatic. AKS Automatic administra completamente los grupos de nodos mediante el aprovisionamiento automático de nodos (NAP), que cambia continuamente el tamaño adecuado de la infraestructura a las demandas de carga de trabajo reales. También habilita todos los escaladores automáticos de carga de trabajo de forma predeterminada y aplica la gobernanza de recursos a través de medidas de seguridad de implementación, que son ventajas adicionales que no proporcionan los valores preestablecidos del clúster.

Considere la posibilidad de multiinquilino

AKS ofrece flexibilidad en la forma de ejecutar clústeres multiinquilino y aislar 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 gestión adicional y la sobrecarga financiera son la contrapartida.

Reducción del desperdicio de recursos a través de la configuración de aplicaciones y clústeres

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 acelera los tiempos de implementación y aumenta la eficacia de las operaciones de escalado. Artifact Streaming 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

Nota:

Los clústeres AKS Automatic aplican automáticamente solicitudes y límites de recursos a todos los pods mediante protecciones de implementación, que están habilitadas de forma predeterminada en modo de imposición. Esto evita el consumo de recursos no controlado y el sobreaprovisionamiento sin necesidad de configuración manual de directivas. En el caso de los clústeres estándar de AKS, configure las cuotas de recursos en el nivel de espacio de nombres, tal como se describe en esta sección.

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 objetos. Al definir cuotas de recursos, se impide que los espacios de nombres individuales consuman más recursos de los asignados. Las cuotas de recursos son útiles para los clústeres multiinquilino en los que los equipos comparten la infraestructura.

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

Cuando se deja desatendido, los clústeres de desarrollo y pruebas pequeños pueden acumular costos innecesarios. Puede desactivar los clústeres que no necesitan ejecutarse en todo momento mediante la característica inicio y detención del clúster. Esta característica apaga todos los grupos de nodos de usuario y del sistema, por lo que no paga por un proceso adicional. El estado del clúster y los objetos se mantiene cuando se vuelve a iniciar el clúster.

Usar reservas de capacidad

Las reservas de capacidad permiten 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

Nota:

Los clústeres AKS Automatic utilizan Prometheus administrado como plataforma de métricas predeterminada. Las métricas de Container Insights no están habilitadas de forma predeterminada. Si usa AKS Automatic, esta optimización de costos ya está en vigor y no se necesitan pasos de migración.

Si va a ingerir datos de métricas a través de Container Insights, se recomienda migrar a Prometheus administrado, 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.

Para más información, consulte procedimientos recomendados de Azure Monitor y administración de costes para Container Insights.

Analítica de registros

En el caso de los registros del plano de control, considere la posibilidad de deshabilitar las categorías que no necesita ni usar la API de registros básicos cuando sea aplicable para reducir los costos de Log Analytics. Para más información, consulte Registros de recursos o plano de control de Azure Kubernetes Service (AKS). En el caso de los registros del plano de datos o los registros de aplicaciones, considere la posibilidad de ajustar la configuración de optimización de costos.

También puede usar Transformaciones en Azure Monitor para filtrar o modificar los registros del plano de control y del plano de datos antes de enviarlos a un área de trabajo de Log Analytics. Para más información sobre cómo crear una transformación, consulte Creación de una transformación en Azure Monitor.

Recomendaciones sobre el costo de Azure Advisor

Las recomendaciones de costos de AKS en Azure Advisor proporcionan recomendaciones para ayudarle a lograr la rentabilidad sin sacrificar la confiabilidad. Advisor analiza las configuraciones de recursos y recomienda soluciones de optimización. Para más información, consulte Obtención de recomendaciones de costos de Azure Kubernetes Service (AKS) en Azure Advisor.

Optimizar cargas de trabajo mediante el escalado automático

Establecimiento de una línea de base

Antes de configurar las opciones de escalado automático, puede usar Azure Load Testing para establecer una línea base para la aplicación. Las pruebas de carga le ayudan a comprender cómo se comporta la aplicación en diferentes condiciones de tráfico e identificar cuellos de botella de rendimiento. Una vez que tenga una línea base, puede configurar las opciones de escalado automático para asegurarse de que la aplicación puede controlar la carga esperada.

Habilitar escalado automático de aplicaciones

Escalado vertical automático de pods

Nota:

Los clústeres automáticos de AKS tienen VPA habilitado de forma predeterminada. Si usa AKS Standard, consulte Uso del escalador automático vertical de pods en Azure Kubernetes Service (AKS) para habilitar y configurar el VPA.

Las solicitudes y los límites que son 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. El 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 las aplicaciones con demandas de recursos fluctuantes. El modo de solo recomendación de VPA permite a los equipos revisar sugerencias de recursos sin aplicarlas automáticamente. Este modo se puede habilitar durante las pruebas y se pueden usar recomendaciones de VPA para establecer la solicitud de CPU y memoria y los límites de los entornos de producción.

Escalado automático horizontal de pods

Nota:

Los clústeres AKS Automatic tienen HPA habilitado de forma predeterminada. Si utiliza AKS Standard, configure el HPA para sus cargas de trabajo como se describe en Escalado automático horizontal de pods.

El Escalador automático de pods horizontales (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 las aplicaciones con demandas predecibles de recursos.

Advertencia

No debe usar el VPA 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 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

Nota:

Los clústeres automáticos de AKS tienen KEDA habilitado de forma predeterminada. Si usa AKS Standard, consulte Instalar el complemento KEDA mediante CLI de Azure para habilitar KEDA.

El 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. KEDA también permite escalar hacia abajo a 0 réplicas, especialmente útil para cargas de trabajo esporádicas controladas por eventos, cargas de trabajo periódicas de aprendizaje automático o de GPU, y entornos de desarrollo y pruebas o de tráfico bajo.

Habilitar escalado automático de la infraestructura

Escalado automático del clúster

Nota:

En AKS Automatic, el escalado de nodos se controla mediante el aprovisionamiento automático de nodos (NAP), que está preconfigurado de forma predeterminada. Para AKS Standard sin NAP, configure el Cluster Autoscaler tal como se describe en esta sección.

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. 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 obtener más información, consulte Procedimientos recomendados y consideraciones sobre el escalador automático de clústeres.

Aprovisionamiento automático de nodos

Nota:

En AKS Automatic, el aprovisionamiento automático de nodos (NAP) está preconfigurado de forma predeterminada. AKS selecciona automáticamente la SKU de máquina virtual óptima para cada carga de trabajo, sin que se requiera ninguna creación manual del grupo de nodos o selección de SKU. En el caso de los clústeres estándar de AKS, siga los pasos descritos en Habilitación o deshabilitación de NAP en AKS para habilitar NAP.

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 la configuración óptima de la máquina virtual en función de los requisitos de recursos de pod pendientes para ejecutar cargas de trabajo de la manera más eficaz 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. Ideal para las cargas de trabajo que se prevé ejecutar en las mismas SKU y regiones durante un periodo 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 las cargas de trabajo que usan diferentes recursos o regiones del centro 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.

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: