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:
- 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.
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?
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 (VM):
Sku Family (Familia de SKU) | Descripción | Caso de uso |
---|---|---|
Máquinas virtuales de Azure Spot | El escalado de máquinas virtuales de acceso puntual de Azure establece los grupos de nodos de acceso puntual e implementados en un único dominio de error sin garantías de alta disponibilidad o acuerdo de nivel de servicio (SLA). 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 Arm (Arm64) Ampere Altra | Las máquinas virtuales Arm64 son eficaces y rentables, pero no afectan al rendimiento. Con la compatibilidad con el grupo de nodos Arm64 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 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 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.
Para obtener más información sobre las opciones de almacenamiento y las consideraciones de costos relacionadas, consulte los siguientes artículos:
- Procedimientos recomendados para el almacenamiento y las copias de seguridad en Azure Kubernetes Service (AKS)
- Opciones de almacenamiento de aplicaciones en Azure Kubernetes Service (AKS)
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. 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.
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.
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. 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.
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, 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.
Cuando se deja desatendido, los clústeres de desarrollo o 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.
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.
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.
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.
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 registros de aplicaciones, considere la posibilidad de ajustar la configuración de optimización de costos.
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.
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 aplicaciones con demandas de recursos fluctuantes.
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 aplicaciones con demandas de recursos predecibles.
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.
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.
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.
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.
Nota
Consulte Rendimiento y escalado para cargas de trabajo pequeñas y medianas en Azure Kubernetes Service (AKS) y procedimientos recomendados de rendimiento y escalado de para cargas de trabajo grandes en Azure Kubernetes Service (AKS) para procedimientos recomendados de escalado adicionales.
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.
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 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.
La optimización de costes es un esfuerzo continuo e iterativo. Para más información, revise las siguientes recomendaciones e instrucciones de arquitectura:
Comentarios de Azure Kubernetes Service
Azure Kubernetes Service es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: