Administración de costos para Kubernetes

Azure Cost Management
Azure Kubernetes Service (AKS)
Azure Managed Disks
Azure Storage
Azure Virtual Machines

En esta guía se explica cómo funcionan los precios y la administración de costos en Azure Kubernetes Service (AKS) en comparación con Amazon Elastic Kubernetes Service (Amazon EKS). En el artículo se describe cómo optimizar los costos e implementar soluciones de gobernanza de costos para el clúster de AKS.

Nota

Este artículo forma parte de una serie de artículos que ayudan a los profesionales que están familiarizados con Amazon EKS a comprender AKS.

Conceptos básicos de los costos de Amazon EKS

En Amazon EKS, se paga un precio fijo por hora por cada clúster de Amazon EKS. También se paga por las redes, las herramientas de operaciones y el almacenamiento que usa el clúster.

Los nodos de trabajo de Amazon EKS son instancias estándar de Amazon EC2, por lo que se aplican los precios normales de Amazon EC2. También se paga por otros recursos de Amazon Web Services (AWS) que se aprovisionan para ejecutar los nodos de trabajo de Kubernetes.

No hay ningún costo adicional por usar grupos de nodos administrados de Amazon EKS. Solo se paga por los recursos de AWS que se aprovisionan, incluidas las instancias de Amazon EC2, los volúmenes de Amazon EBS, las horas del clúster de Amazon EKS y cualquier otra infraestructura de AWS.

Al crear un grupo de nodos administrados, puede optar por usar el tipo de capacidad Instancias a petición o de acceso puntual para administrar el costo de los nodos de agente. Amazon EKS implementa un grupo de nodos administrados con un grupo de escalado automático de Amazon EC2 que contiene todas las instancias a petición o todas las instancias de acceso puntual.

Con las instancias a petición, se paga por la capacidad de proceso por segundo, sin compromisos a largo plazo. Las instancias de acceso puntual de Amazon EC2 son capacidad de Amazon EC2 de reserva que ofrece descuentos en comparación con los precios a petición.

  • Las instancias de acceso puntual de Amazon EC2 se pueden interrumpir con un aviso de interrupción de dos minutos cuando EC2 necesita recuperar la capacidad.

  • Amazon proporciona Spot Fleet, un método para automatizar grupos de instancias a petición y de acceso puntual, y Spot Instance Advisor para ayudar a predecir qué región o zona de disponibilidad podría proporcionar una interrupción mínima.

  • Los precios de la instancias de acceso puntual de AWS varían. AWS establece el precio en función de las tendencias de oferta y demanda a largo plazo para la capacidad de las instancias de acceso puntual y se paga el precio vigente durante el período de tiempo que la instancia está activa.

Conceptos básicos del costo de AKS

La arquitectura de Kubernetes se basa en dos capas, el plano de control y uno o varios nodos o grupos de nodos. El modelo de precios de AKS se basa en las dos capas de arquitectura de Kubernetes.

  • El plano de control proporciona servicios básicos de Kubernetes, como el servidor de API y etcd, y la orquestación de cargas de trabajo de la aplicación. La plataforma Azure administra el plano de control de AKS y, para el nivel gratis de AKS, el plano de control no tiene ningún costo.

  • Los nodos, también denominados nodos de agente o nodos de trabajo, hospedan cargas de trabajo y aplicaciones de Kubernetes. En AKS, los clientes administran completamente y pagan todos los costos de los nodos de agente.

En el diagrama siguiente se muestra la relación entre el plano de control y los nodos en una arquitectura de Kubernetes de AKS.

Diagrama que muestra el plano de control y los nodos de la arquitectura de AKS.

Plano de control

Azure aprovisiona y configura automáticamente la capa del plano de control al crear un clúster de AKS. En el nivel Gratis de AKS, el plano de control es gratuito.

En el caso de un contrato de nivel de servicio del plano de control superior, puede crear un clúster de AKS en el nivel Estándar. El contrato de nivel de servicio del tiempo de actividad se incluye de forma predeterminada en el nivel Estándar y se habilitado clúster a clúster. El precio es de 0,10 USD por clúster y hora. Para más información, consulte la información de los precios de AKS.

Los clústeres del nivel Estándar tienen más recursos del plano de control, como el número de instancias del servidor de API, los límites de recursos de Etcd, una escalabilidad de hasta 5000 nodos y la compatibilidad con el contrato de nivel de servicio del tiempo de actividad con respaldo financiero existente. AKS usa réplicas del nodo principal en los dominios de actualización y error para satisfacer los requisitos de disponibilidad.

Es mejor usar el nivel Estándar en las cargas de trabajo de producción para proporcionar una mayor disponibilidad de los componentes del plano de control. Los clústeres de nivel Gratis tienen menos réplicas y recursos limitados del plano de control, y no son adecuados para cargas de trabajo de producción.

Nodos

En AKS, se crean nodos de agente o de trabajo en uno o varios grupos de nodos, que pueden usar muchas funcionalidades básicas de Azure en el entorno de Kubernetes. AKS solo cobra por los nodos asociados al clúster de AKS.

Los nodos de AKS usan varios recursos de infraestructura de Azure, como conjuntos de escalado de máquinas virtuales, redes virtuales y discos administrados. Por ejemplo, puede usar la mayoría de los tipos de máquina virtual (VM) de Azure directamente dentro de AKS. Puede usar Azure Reservations y el plan de ahorro de Azure para el proceso para obtener descuentos significativos en estos recursos.

Los precios del clúster de AKS se basan en la clase, el número y el tamaño de las máquinas virtuales de los grupos de nodos. El costo de la máquina virtual depende del tamaño, el tipo de CPU, el número de vCPU, la memoria, la familia y el tipo de almacenamiento disponible, como SSD de alto rendimiento o HDD estándar. Para más información, consulte Series de máquinas virtuales. Planee el tamaño del nodo según los requisitos de la aplicación, el número de nodos y las necesidades de escalabilidad del clúster.

Para más información sobre los nodos de agente y los grupos de nodos, consulte el artículo Grupos de nodos de esta serie y Creación y administración de varios grupos de nodos para un clúster en Azure Kubernetes Service (AKS).

Implementación de clústeres de AKS

Cada implementación de AKS abarca dos grupos de recursos de Azure.

  • Se crea el primer grupo de recursos, que solo contiene el recurso de servicio de Kubernetes y no tiene ningún costo asociado.

  • El proveedor de recursos de AKS crea automáticamente el segundo grupo de recursos o nodo durante la implementación. El nombre predeterminado de este grupo de recursos es MC_<resourcegroupname>_<clustername>_<location>, pero puede especificar otro nombre. Para más información, consulte Proporcionar mi propio nombre para el grupo de recursos de nodo de AKS.

    El grupo de recursos de nodo contiene todos los recursos de infraestructura del clúster y es el que muestra los cargos realizados en la suscripción. Estos recursos incluyen las máquinas virtuales de nodos de Kubernetes, las redes virtuales, el almacenamiento y otros servicios. AKS elimina automáticamente el grupo de recursos de nodo cada vez que se elimina el clúster, por lo que solo se debe usar para los recursos que comparten el ciclo de vida del clúster.

Costos de proceso

Se paga por las máquinas virtuales de Azure según su tamaño y uso. Para información sobre cómo el proceso de Azure se compara con AWS, consulte Servicios de proceso en Azure y AWS.

Por lo general, cuanto mayor sea el tamaño de máquina virtual que seleccione para un grupo de nodos, mayor será el costo por hora de los nodos de agente. Cuanto más especializada sea la serie de máquinas virtuales que use para el grupo de nodos, por ejemplo, habilitadas para la unidad de procesamiento gráfico (GPU) u optimizadas para memoria, más costoso será el grupo.

Al investigar los precios de las máquinas virtuales de Azure, tenga en cuenta los siguientes puntos:

  • Los precios varían según la región y no todos los servicios y tamaños de máquina virtual están disponibles en todas las regiones.

  • Hay varias familias de máquinas virtuales, optimizadas para diferentes tipos de cargas de trabajo.

  • Los discos administrados que se usan como unidades de sistema operativo se cobran por separado y debe agregar su costo a las estimaciones. El tamaño del disco administrado depende de la clase, como HDD estándar, SSD estándar, SSD prémium o SSD Ultra. Las operaciones de entrada y salida por segundo (IOPS) y el rendimiento en MB/s dependen del tamaño y la clase. Los discos de SO efímeros son gratuitos y se incluyen en el precio de la máquina virtual.

  • Los discos de datos, incluidos los creados con notificaciones de volumen persistente, son opcionales y se cobran individualmente en función de su clase, como HDD estándar, SSD estándar, SSD prémium y SSD Ultra. Debe agregar explícitamente los discos de datos a las estimaciones de costos. El número de discos de datos permitidos, unidades SSD de almacenamiento temporal, IOPS y rendimiento en MB/s dependen del tamaño y la clase de máquina virtual.

  • Cuanto más tiempo estén en funcionamiento los nodos de agente, mayor será el costo total del clúster. Normalmente, los entornos de desarrollo no necesitan ejecutarse continuamente.

  • Las interfaces de red (NIC) son gratis.

Costos de almacenamiento

Container Storage Interface (CSI) es un estándar para exponer sistemas de almacenamiento de archivos y bloques a cargas de trabajo contenedorizadas en Kubernetes. Gracias a la adopción y el uso de CSI, AKS puede escribir, implementar e iterar complementos que exponen sistemas de almacenamiento de Kubernetes sin tocar el código principal de Kubernetes ni esperar a sus ciclos de versión.

Si ejecuta cargas de trabajo que usan volúmenes persistentes de CSI en el clúster de AKS, tenga en cuenta el costo asociado del almacenamiento que las aplicaciones aprovisionan y usan. Los controladores de almacenamiento de CSI en AKS proporcionan compatibilidad nativa con las siguientes opciones de almacenamiento:

  • Azure Disks crea recursos de disco de datos de Kubernetes. Los discos de Azure pueden usar Azure Premium Storage, respaldado por SSD de alto rendimiento, o bien Azure Standard Storage, respaldado por HHD normales o SSD estándar. La mayoría de las cargas de trabajo de producción y desarrollo usan Premium Storage. Los discos de Azure se montan como ReadWriteOnce, lo que hace que estén disponibles solo para un nodo de AKS. Para los volúmenes de almacenamiento a los que pueden acceder varios pods simultáneamente, use Azure Files. Para información sobre los costos, consulte Precios de Managed Disks.

  • Azure Files monta los recursos compartidos de archivos del bloque de mensajería del servidor (SMB) 3.0/3.1 respaldados por una cuenta de Azure Storage en pods de AKS. Puede compartir datos entre varios nodos y pods. Azure Files puede usar almacenamiento estándar de Azure respaldado por HDD normales o almacenamiento prémium respaldado por SSD de alto rendimiento. Azure Files usa una cuenta de Azure Storage y acumula cargos en función de los siguientes factores:

    • Servicio: Blob, File, Queue, Table o discos no administrados
    • Tipo de cuenta de almacenamiento: GPv1, GPv2, Blob o Blob Premium
    • Resistencia: almacenamiento con redundancia local (LRS), almacenamiento con redundancia de zona (ZRS), almacenamiento con redundancia geográfica (GRS) y almacenamiento con redundancia geográfica con acceso de lectura (RA-GRS).
    • Nivel de acceso: frecuente, esporádico o de archivo
    • Operaciones y transferencias de datos
    • Capacidad usada en GB
  • Azure NetApp Files está disponible en varios niveles de SKU y requiere una capacidad aprovisionada mínima de 4 TiB, con incrementos de 1 TiB. Los cargos de Azure NetApp Files se basan en los siguientes factores:

    • SKU
    • Resistencia: LRS, ZRS o GRS
    • Tamaño o capacidad aprovisionada, no capacidad usada
    • Operaciones y transferencia de datos
    • Copias de seguridad y restauraciones

Costos de redes

Varios servicios de red de Azure pueden proporcionar acceso a las aplicaciones que se ejecutan en AKS:

  • Azure Load Balancer. De forma predeterminada, Load Balancer usa SKU estándar. Los cargos de Load Balancer se basan en:

    • Reglas: número de reglas de equilibrio de carga y de salida configuradas. Las reglas de traducción de direcciones de red (NAT) de entrada no cuentan en el número total de reglas.
    • Datos procesados: cantidad de datos procesados de entrada y salida, independientes de las reglas. Cuando no hay configurada ninguna regla, la instancia de Standard Load Balancer no se cobra por hora.
  • Azure Application Gateway. AKS suele usar Application Gateway mediante el controlador de entrada de Application Gateway, o poniendo delante un controlador de entrada diferente con Application Gateway administrado manualmente. Application Gateway admite el enrutamiento de puerta de enlace, la terminación de seguridad de la capa de transporte (TLS) y la funcionalidad Web Application Firewall (WAF). Los cargos de Application Gateway se basan en:

    • Precio fijo establecido por hora u hora parcial.
    • Precio unitario de capacidad, un costo agregado basado en el consumo. Cada unidad de capacidad tiene como máximo una unidad de proceso, 2500 conexiones persistentes y un rendimiento de 2,22 Mbps.
  • Las direcciones IP públicas tienen un costo asociado que depende de:

    • La asociación reservada frente a dinámica.
    • El nivel Estándar básico frente a protegido y con redundancia de zona.

Costos de escalabilidad horizontal

Hay varias opciones para escalar un clúster de AKS a fin de agregar capacidad adicional a los grupos de nodos:

  • A petición, puede actualizar manualmente el número de máquinas virtuales que forman parte de un grupo de nodos o agregar más grupos de nodos.

  • El escalador automático de clústeres de AKS supervisa los pods que no se pueden programar en los nodos debido a restricciones de recursos y aumenta automáticamente el número de nodos.

  • AKS admite la ejecución de contenedores en Azure Container Instances mediante la implementación de kubelet virtual. Un nodo virtual de AKS aprovisiona pods de Container Instances que comienzan en segundos, lo que permite que AKS se ejecute con suficiente capacidad para una carga de trabajo media. Cuando el clúster de AKS se queda sin capacidad, puede escalar horizontalmente más pods de Container Instances sin administrar servidores adicionales. Puede combinar este enfoque con el escalador automático del clúster y el escalado manual.

Si usa el escalado a petición o el escalador automático de clústeres, tenga en cuenta las máquinas virtuales agregadas. Los cargos de Container Instances se basan en los siguientes factores:

  • Facturación de métricas basadas en uso por grupo de contenedores
  • Memoria y vCPU de recopilación
  • Uso compartido de contenedores únicos o varios contenedores
  • Uso de contenedores programados conjuntamente que comparten el ciclo de vida de red y nodo
  • Duración de uso calculada a partir del inicio o reinicio de la extracción de imágenes hasta que se detiene
  • Se ha agregado un cargo por grupos de contenedores de Windows

Costos de actualización

Parte del ciclo de vida del clúster de AKS implica efectuar actualizaciones periódicas a la versión más reciente de Kubernetes. Es importante aplicar las versiones de seguridad más recientes u obtener las características más recientes. Puede actualizar los clústeres de AKS y los grupos de nodos únicos de forma manual o automática. Para más información, consulte Actualización de un clúster de Azure Kubernetes Service (AKS).

De manera predeterminada, AKS configura las actualizaciones para la sobrecarga con un nodo adicional. Un valor predeterminado de 1 para la configuración max-surge minimiza la interrupción de la carga de trabajo al crearse un nodo adicional para reemplazar los nodos con versiones anteriores antes de acordonar o purgar las aplicaciones existentes. Puede personalizar el valor max-surge por grupo de nodos para permitir un equilibrio entre la velocidad de actualización y la interrupción de la actualización. El aumento del valor max-surge completa el proceso de actualización más rápido, pero un valor grande de max-surge puede provocar interrupciones durante el proceso de actualización e incurrir en costos adicionales de más máquinas virtuales.

Otros costos

En función del uso y los requisitos, los clústeres de AKS pueden incurrir en los siguientes costos adicionales:

Optimización de costos

Las siguientes recomendaciones le ayudan a optimizar los costos del clúster de AKS:

  • Revise la sección Optimización de costos del marco de buena arquitectura de Azure para AKS.

  • En el caso de las soluciones multiinquilino, el aislamiento físico es más costoso y agrega sobrecarga de administración. El aislamiento lógico requiere más experiencia de Kubernetes y aumenta el área expuesta a los cambios y las amenazas de seguridad, pero comparte los costos.

  • Azure Reservations puede ayudarle a ahorrar dinero mediante el compromiso a planes de uno o tres años en varios productos, como las máquinas virtuales del clúster de AKS. Se obtienen descuentos cuando se reserva capacidad. Use Azure Reservations para almacenamiento y proceso para reducir el costo de los nodos de agente.

    Las reservas pueden reducir los costos de recursos hasta un 72 % de los precios de pago por uso y no afectan al estado en tiempo de ejecución de los recursos. Después de adquirir una reserva, el descuento se aplica automáticamente a los recursos coincidentes. Puede comprar reservas en Azure Portal o mediante las API REST de Azure, PowerShell o la CLI de Azure. Si usa herramientas operativas que se basan en áreas de trabajo de Log Analytics, considere también la posibilidad de usar Reservations para este almacenamiento.

  • Agregue uno o varios grupos de nodos de acceso puntual al clúster de AKS. Un grupo de nodos de acceso puntual es un grupo de nodos respaldado por conjuntos de escalado de máquinas virtuales de acceso puntual de Azure. El uso de máquinas virtuales de acceso puntual para los nodos del clúster de AKS permite aprovechar la capacidad sin usar de Azure con un importante ahorro en los costos. La capacidad disponible no utilizada varía en función de muchos factores, como el tamaño del nodo, la región y la hora del día. Azure asigna los nodos de acceso puntual si hay capacidad disponible, pero no hay ningún Acuerdo de Nivel de Servicio para los nodos de acceso puntual. Un conjunto de escalado de acceso puntual que respalda el grupo de nodos de acceso puntual se implementa en un solo dominio de error y no ofrece garantías de alta disponibilidad. Cuando Azure necesite recuperar la capacidad, su infraestructura expulsará los nodos de acceso puntual.

    Al crear un grupo de nodos de acceso puntual, puede definir el precio máximo que pagará por hora y habilitar el escalador automático de clústeres, que se recomienda para los grupos de nodos de acceso puntual. El escalador automático de clústeres escala y reduce horizontalmente el número de nodos del grupo de nodos en función de las cargas de trabajo en ejecución. En el caso de los grupos de nodos de acceso puntual, el escalador automático de clústeres escala verticalmente el número de nodos después de una expulsión si aún se necesitan los nodos. Para más información, consulte Agregar un grupo de nodos de acceso puntual a un clúster de Azure Kubernetes Service (AKS).

  • Elija el tamaño de máquina virtual adecuado para los grupos de nodos del clúster de AKS en función de las necesidades de CPU y memoria de las cargas de trabajo. Azure ofrece muchos tipos de instancias de máquina virtual diferentes que coinciden con una amplia gama de casos de uso, con diferentes combinaciones de CPU, memoria, almacenamiento y capacidad de red. Cada tipo viene en uno o varios tamaños, por lo que puede escalar fácilmente los recursos.

    Ahora puede implementar y administrar aplicaciones contenedorizadas con AKS que se ejecutan en procesadores basados en ARM de Ampere Altra. Para más información, consulte Azure Virtual Machines con procesadores basados en ARM.

  • Cree varios grupos de nodos con diferentes tamaños de máquina virtual con fines especiales y cargas de trabajo. Use marcas y tolerancias y etiquetas de nodo de Kubernetes para colocar aplicaciones que consumen muchos recursos en grupos de nodos específicos y para evitar problemas de vecinos ruidosos. Mantenga estos recursos de nodo disponibles para las cargas de trabajo que los necesiten y no programe otras cargas de trabajo en estos nodos. El uso de diferentes tamaños de máquina virtual para distintos grupos de nodos también puede optimizar los costos. Para más información, consulte Uso de varios grupos de nodos en Azure Kubernetes Service (AKS).

  • Los grupos de nodos del sistema deben contener al menos un nodo, mientras que los grupos de nodos de usuario pueden contener varios nodos o ninguno. Siempre que sea posible, puede configurar un grupo de nodos de usuario para escalar automáticamente de 0 a N nodos. Puede configurar las cargas de trabajo para el escalado o la reducción horizontal mediante un escalador automático de pods horizontal. Base la escalabilidad automática en CPU y memoria, o use la escalabilidad automática controlada por eventos (KEDA) de Kubernetes para basarla en las métricas de un sistema externo, como Apache Kafka, RabbitMQ o Azure Service Bus.

  • Asegúrese de establecer correctamente las solicitudes y los límites de los pods para mejorar la densidad de la aplicación y evitar asignar demasiados recursos de CPU y memoria a las cargas de trabajo. Observe el consumo medio y máximo de CPU y memoria mediante Prometheus o Container Insights. Configure correctamente los límites y cuotas de los pods en los manifiestos de YAML, los gráficos de Helm y los manifiestos de Kustomize para las implementaciones.

  • Use objetos ResourceQuota para establecer cuotas para la cantidad total de memoria y CPU para todos los pods que se ejecutan en un espacio de nombres determinado. El uso sistemático de cuotas de recursos evita problemas de vecinos ruidosos, mejora la densidad de la aplicación y reduce el número de nodos de agente y los costos totales. Use también objetos LimitRange para configurar las solicitudes predeterminadas de CPU y memoria para los pods de un espacio de nombres.

  • Use Container Instances para la expansión de disco.

  • Es posible que las cargas de trabajo de AKS no tengan que ejecutarse continuamente, como es el caso de las cargas de trabajo específicas de grupos de nodos de clúster de desarrollo. Para optimizar los costos, puede desactivar completamente un clúster de AKS o detener uno o varios grupos de nodos en el clúster de AKS. Para más información, consulte Detener e iniciar un clúster de Azure Kubernetes Service (AKS) e Iniciar y detener un grupo de nodos en Azure Kubernetes Service (AKS).

  • Azure Policy se integra con AKS mediante directivas integradas para aplicar medidas de seguridad y cumplimiento centralizados, coherentes y a gran escala. Habilite el complemento Azure Policy en el clúster y aplique las solicitudes y los límites de CPU predeterminados, así como los límites de recursos de memoria para garantizar así que los límites de recursos de CPU y memoria se definan en contenedores de clústeres.

  • Use Azure Advisor para supervisar y liberar recursos no utilizados.

  • Use presupuestos y revisiones de Microsoft Cost Management para realizar un seguimiento de los gastos.

Gobernanza de los costos

La nube puede mejorar considerablemente el rendimiento técnico de las cargas de trabajo de una empresa. Las tecnologías de nube también pueden reducir el costo y la sobrecarga de administrar los recursos de la organización. Sin embargo, esta oportunidad empresarial también presenta riesgos, ya que las implementaciones en la nube pueden aumentar la posibilidad de despilfarro e ineficiencias.

La gobernanza de costos es el proceso de implementación continua de directivas o controles para limitar el gasto y los costos. Las herramientas nativas de Kubernetes y las herramientas de Azure admiten la gobernanza de costos con la supervisión proactiva y la optimización de costos subyacente de la infraestructura.

  • Azure Cost Management + Billing es un conjunto de herramientas de Microsoft que le ayuda a analizar, administrar y optimizar los costos de sus cargas de trabajo de Azure. Use el conjunto de herramientas para asegurarse de que su organización aprovecha las ventajas que proporciona la nube.

  • Revise los procedimientos recomendados de gobernanza de Cloud Adoption Framework para la materia de administración de costos a fin de comprender mejor cómo administrar y controlar los costos de la nube.

  • Explore herramientas de código abierto como KubeCost para supervisar y controlar el costo del clúster de AKS. Puede limitar la asignación de costos a una implementación, un servicio, una etiqueta, un pod o un espacio de nombres, lo que proporciona flexibilidad a la hora de mostrar y cobrar a los usuarios del clúster.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Creadores de entidad de seguridad:

Otros colaboradores:

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

Pasos siguientes