Estimación del tamaño del clúster: nodos

Completado

Ahora debe determinar qué tipo de nodos de máquina virtual (VM) necesita y cuántos nodos necesita ejecutar.

¿Qué tamaño de las máquinas virtuales necesita?

En Azure Kubernetes Service (AKS), cada nodo del clúster es una máquina virtual de Azure. Las máquinas virtuales incluyen varias especificaciones para ayudar a admitir las demandas de diferentes tipos de aplicaciones. Algunas aplicaciones pueden necesitar más capacidad de procesamiento, más memoria o un almacenamiento más rápido. Debe seleccionar una categoría y una instancia de máquina virtual que satisfagan las necesidades de la aplicación.

Querrá asegurarse de que el tipo tiene suficiente memoria y capacidad de procesamiento para la aplicación. Tenga en cuenta que no toda la memoria y la potencia de procesamiento están disponibles para la aplicación. Parte de esta potencia es necesaria para el sistema operativo y para los componentes del sistema de Kubernetes. AKS reserva automáticamente una cierta cantidad de memoria y potencia de procesamiento para asegurarse de que estos componentes críticos del sistema puedan funcionar según sea necesario.

El tipo de máquina virtual por defecto desplegada como parte de un clúster AKS es la máquina virtual de uso general D2 v3, una máquina virtual de dos núcleos con 8 gigabytes de memoria. AKS reservará 100 milinúcleos de procesador y 3,55 GiB de memoria, lo que dejará 1,900 milinúcleos (1,9 núcleos) y 5,45 Gi de memoria libres para la aplicación.

Sugerencia

La cantidad de procesador y memoria reservados varía en función del tipo de máquina virtual que seleccione. Esta cantidad se vuelve proporcionalmente más pequeña a medida que aumenta el tamaño de la máquina virtual.

Otra consideración son los recursos bloqueados. Imagine que implementa tres aplicaciones en un nodo de D2 v3. Cada una de esas aplicaciones requiere 600 milinúcleos de procesador y 500 Mi de memoria. Una vez implementadas esas aplicaciones, quedan 100 milinúcleos de procesador y unos 2,05 GiB de memoria sin utilizar. Si implementara una cuarta instancia de la aplicación, tendría que enviarla a un nuevo nodo porque los 100 milinúcleos restantes no son suficientes. Sin embargo, eso deja 2 GiB de memoria en el nodo que no se puede usar. Ese recurso de memoria se conoce como bloqueado.

Una opción ideal de máquina virtual es una con capacidad suficiente para ejecutar las cargas de trabajo sin dejar recursos perdidos. Si las cargas de trabajo se escalan verticalmente y horizontalmente de forma dinámica, quiere tener suficientes recursos para cubrir los escenarios de uso habituales y, al mismo tiempo, la flexibilidad para escalar verticalmente cuando sea necesario.

¿Cuántos nodos necesita?

La aplicación siempre debe estar disponible y ser capaz de controlar los errores de los nodos subyacentes. Puede proporcionar resistencia con varias réplicas de la aplicación distribuidas entre varios nodos.

AKS tiene grupos de nodos, que son grupos de máquinas virtuales del mismo tipo. Puede tener varios grupos de nodos. Por ejemplo, podría tener un grupo de nodos que contenga máquinas virtuales de uso general, un grupo de nodos con máquinas virtuales optimizadas para memoria y un grupo de nodos con máquinas virtuales equipadas con GPU. Después, puede usar la característica nativa de programación de Kubernetes para asegurarse de que las cargas de trabajo se implementan en el grupo de nodos y el tipo de máquina virtual adecuados.

Los grupos de nodos pueden admitir uno de los dos modos: Sistema o Usuario. Los grupos de nodos del sistema ejecutan pods críticos del sistema, que son esenciales para el funcionamiento del clúster de Kubernetes, incluidos servicios como controladores de almacenamiento, DNS o servidores de métricas. Los grupos de nodos de usuario ejecutan las aplicaciones.

En una configuración predeterminada, un clúster de AKS contiene un único grupo de nodos del sistema, que se usa para ejecutarlo todo. Si lo desea, puede agregar grupos de nodos de Usuario o Sistema adicionales y configurar los pods de aplicación para que se ejecuten exclusivamente en los grupos de nodos de Usuario. Los pods críticos del sistema solo se ejecutan en los grupos de nodos del sistema. El uso de grupos de nodos de sistema y usuario puede impedir que las aplicaciones configuradas incorrectamente afecten al funcionamiento de los servicios críticos del sistema y puedan provocar un error en el clúster.

Kubernetes también puede agregar o quitar nodos cuando sea necesario. Si tiene previsto usar esta característica, debe definir un límite superior para el número máximo de nodos a los que Kubernetes puede escalar verticalmente. A continuación, planee el diseño de red en torno a ese número máximo. Tenga en cuenta que debe prever al menos un nodo adicional por clúster para que el proceso de actualización se ejecute correctamente.

Sugerencia

Puede configurar el número de nodos actualizados en un momento dado, siendo uno el valor predeterminado. La actualización de más de un nodo a la vez puede reducir el tiempo total necesario para actualizar un clúster. Debe tener en cuenta los nodos adicionales como parte del planeamiento.

¿Cuántos nodos debe ejecutar?

Para determinar el número de nodos que se van a ejecutar, debe comprender los requisitos de procesador y memoria de la aplicación. El equipo de desarrollo le proporcionó los resultados de sus pruebas de rendimiento con detalles de la cantidad de procesador y memoria que necesitan los servicios. Los resultados incluyen los requisitos de línea base junto con las cantidades máximas para períodos de alta demanda:

Servicio Mín./máx. de procesador Mín./máx. de memoria
Front-end del sitio web 250 m / 1000 m 250 Mi / 1 Gi
API de identidad 100 m / 500 m 250 Mi / 500 Mi
API de catálogo 500 m - 1000 m 1 Gi / 1 Gi
API de pedidos 100 m - 1000 m 100 Mi / 1 Gi
Asistente de pedidos 100 m - 1000 m 100 Mi / 1 Gi
API del carro de la compra 100 m - 1000 m 500 Mi / 500 Mi
API de marketing 250 m - 750 m 500 Mi / 1 Gi
API de ubicaciones 100 m - 500 m 100 Mi / 500 Mi

Sugerencia

  • Kubernetes mide el uso del procesador en milinúcleos o milésimas de núcleo. Por lo tanto, 100 m equivale a una décima parte de un núcleo y 1000 m equivale a un único núcleo de procesador.
  • Puede medir la memoria de varias maneras. Los ejemplos del gráfico de resultados de la prueba de rendimiento usan Mi y Gi, que son la potencia de dos equivalentes de megabyte y gigabyte. 500 Mi se conoce generalmente como 500 megabytes y 1 Gi se conoce generalmente como 1 gigabyte.

Dimensionamiento de los nodos

Ha determinado el número mínimo de réplicas que debe ejecutar cada servicio y el número mínimo de núcleos de procesador y memoria que requiere cada servicio. Esto le proporciona un total de 1,5 núcleos y 2,8 Gi de memoria como punto inicial. Cuando la aplicación alcanza su número máximo de réplicas y utiliza su número máximo de núcleos, de procesador y de memoria, necesita 53 núcleos y 50 GB de memoria.

En este escenario, las cargas de trabajo consumen mucha CPU. Si trabajase con la máquina virtual de uso general D2 v3 predeterminada, necesitaría una gran cantidad de máquinas virtuales para satisfacer los requisitos de procesador de la carga de trabajo. Esto daría lugar a una gran cantidad de memoria sin usar en las máquinas virtuales. Consideremos un tipo de máquina virtual destinado a cargas de trabajo de proceso intensivo. Por ejemplo, algo de la serie Fsv2 necesitaría menos máquinas virtuales para cumplir los requisitos del procesador y tendría una cantidad menor de memoria no utilizada.

El tipo de máquina virtual F8s v2 tiene 8 núcleos y 16 GB de memoria. Con las reservas de recursos de AKS, obtiene 7820 milinúcleos y 12,65 Gi para cada nodo. Al ejecutarse a escala máxima, necesitaría siete máquinas virtuales para controlar las cargas de trabajo.

Ahora, debe echar un vistazo a la red.