Elección de un tipo de instancia de nodo de Amazon EC2 óptimo - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Elección de un tipo de instancia de nodo de Amazon EC2 óptimo

Amazon EC2 proporciona una amplia selección de tipos de instancias para nodos de trabajo. Cada tipo de instancia ofrece diferentes capacidades de computación, memoria y almacenamiento. Cada instancia se agrupa también en una familia de instancias en función de dichas características. Para obtener una lista, consulte Tipos de instancias disponibles en la Guía del usuario de Amazon EC2. Amazon EKS publica diferentes variaciones de las AMI de Amazon EC2 para habilitar el soporte. Para asegurarse de que el tipo de instancia que seleccione es compatible con Amazon EKS, tenga en cuenta los siguientes criterios.

  • En la actualidad, las AMI de Amazon EKS no admiten la familia mac.

  • Las AMI de Arm y las no aceleradas de Amazon EKS no admiten las familias g3, g4, inf y p.

  • Las AMI aceleradas de Amazon EKS no admiten las familias a, c, hpc, m y t.

  • Para las instancias basadas en ARM, Amazon Linux 2023 (AL2023) solo admite tipos de instancias que utilizan procesadores Graviton2 o posteriores. AL2023 no admite las instancias A1.

Al elegir entre los tipos de instancias admitidos por Amazon EKS, tenga en cuenta las siguientes capacidades de cada tipo.

Número de instancias de un grupo de nodos

En general, que haya menos instancias y que sean más grandes es mejor, especialmente si tiene muchos DaemonSets. Cada instancia requiere llamadas a la API para el servidor de API, por lo que cuantas más instancias tenga, más carga tendrá el servidor de API.

Sistema operativo

Revise los tipos de instancias admitidos para Linux, Windows y Bottlerocket. Antes de crear instancias de Windows, consulte Deploy Windows nodes on EKS clusters.

Arquitectura de hardware

¿Necesita x86 o Arm? Antes de implementar instancias de Arm, consulte Amazon EKS optimized Arm Amazon Linux AMIs. ¿Necesita instancias integradas en Nitro System (Linux o Windows) o que tengan capacidades aceleradas? Si necesita capacidades aceleradas, solo puede utilizar Linux con Amazon EKS.

Número máximo de pods

Dado que a cada pod se le asigna su propia dirección IP, la cantidad de direcciones IP admitidas por un tipo de instancia es un factor que se considera a la hora de determinar el número de pods que se pueden ejecutar en la instancia. Para determinar manualmente cuántos pods admite un tipo de instancia, consulte .

Los tipos de instancia AWS Nitro System admiten opcionalmente más direcciones IP que los tipos de instancias que no son Nitro System. Sin embargo, no todas las direcciones IP asignadas a una instancia están disponibles para los pods. Para asignar un número significativamente mayor de direcciones IP a sus instancias, debe tener la versión 1.9.0 o posterior del complemento Amazon VPC CNI instalada en el clúster y configurada de forma adecuada. Para obtener más información, consulte Asignación de más direcciones IP a los nodos de Amazon EKS con prefijos. Para asignar el mayor número de direcciones IP a sus instancias, debe tener la versión 1.10.1 o posterior del complemento Amazon VPC CNI instalada en su clúster, e implementar este con la familia IPv6.

Familia de IP

Puede usar cualquier tipo de instancia compatible cuando utilice la familia IPv4 para un clúster, que permite que su clúster asigne direcciones IPv4 privadas a sus pods y servicios. Pero si desea usar la familia IPv6 para su clúster, entonces debe usar tipos de instancias AWS Nitro System o tipos de ejemplares bare metal. Solo se admite IPv4 en las instancias de Windows. Su clúster debe ejecutar la versión 1.10.1 o posterior del complemento Amazon VPC CNI. Para obtener más información acerca del uso de IPv6, consulte Información sobre la asignación de direcciones IPv6 a clústeres, pods y servicios.

Versión del complemento CNI de Amazon VPC que ejecuta

La versión más reciente del complemento CNI de Amazon VPC para Kubernetes es compatible con estos tipos de instancias. Es posible que tenga que actualizar la versión del complemento CNI de Amazon VPC para aprovechar los últimos tipos de instancia admitidos. Para obtener más información, consulte Asignación de direcciones IP a pods con CNI de Amazon VPC. La última versión admite las características más recientes para el uso con Amazon EKS. Las versiones anteriores no admiten todas las características. Puede ver las características compatibles con las distintas versiones en Changelog en GitHub.

AWS Región de en la que va a crear los nodos

No todos los tipos de instancias están disponibles en todas las regiones de AWS.

Si utiliza grupos de seguridad para pods

Si utiliza grupos de seguridad para pods, solo se admiten tipos de instancia específicos. Para obtener más información, consulte Asignación de los grupos de seguridad a pods individuales.

Cómo se determina maxPods

El valor maxPods final aplicado a un nodo depende de varios componentes que interactúan en un orden específico de precedencia. Comprender este orden ayuda a evitar comportamientos inesperados al personalizar maxPods.

Orden de precedencia (de mayor a menor):

  1. Aplicación obligatoria de grupos de nodos administrados: cuando utiliza un grupo de nodos administrado sin una AMI personalizada, Amazon EKS aplica un límite a maxPods en los datos de usuario del nodo. Para instancias con menos de 30 vCPU, el límite es 110. Para instancias con más de 30 vCPU, el límite es 250. Este valor tiene precedencia sobre cualquier otra configuración de maxPods, incluida maxPodsExpression.

  2. Configuración de maxPods en kubelet: si establece maxPods directamente en la configuración de kubelet (por ejemplo, mediante una plantilla de lanzamiento con una AMI personalizada), este valor tiene precedencia sobre maxPodsExpression.

  3. nodeadm maxPodsExpression: si utiliza maxPodsExpression en la NodeConfig, nodeadm evalúa la expresión para calcular maxPods. Esto solo es efectivo cuando el valor no ha sido establecido previamente por un origen de mayor precedencia.

  4. Cálculo predeterminado basado en ENI: si no se establece ningún otro valor, la AMI calcula maxPods en función del número de interfaces de red elásticas (ENI) y direcciones IP admitidas por el tipo de instancia. Esto es equivalente a la fórmula (number of ENIs × (IPs per ENI − 1)) + 2. El + 2 tiene en cuenta que la CNI y kube-proxy de Amazon VPC se ejecutan en cada nodo y no consumen una dirección IP de pod.

importante

Si utiliza un grupo de nodos administrado y establece maxPodsExpression en la NodeConfig, la aplicación del grupo de nodos administrado tiene precedencia sobre la expresión. Para utilizar un valor personalizado de maxPods con grupos de nodos administrados, debe especificar una AMI personalizada en la plantilla de lanzamiento y establecer maxPods directamente. Para obtener más información, consulte Personalización de nodos administrados con plantillas de lanzamiento.

Grupos de nodos administrados frente a nodos autoadministrados

Con grupos de nodos administrados (sin una AMI personalizada), Amazon EKS inyecta el valor de maxPods en los datos de usuario de arranque del nodo. Esto significa:

  • El valor de maxPods siempre se limita a 110 o 250, según el tamaño de la instancia.

  • Cualquier valor de maxPodsExpression que configure se reemplaza por este valor inyectado.

  • Para utilizar un valor diferente de maxPods, especifique una AMI personalizada en la plantilla de lanzamiento y pase --use-max-pods false junto con --kubelet-extra-args '--max-pods=my-value' al script bootstrap.sh. Para ver ejemplos, consulte Personalización de nodos administrados con plantillas de lanzamiento.

Con nodos autoadministrados, tiene control total sobre el proceso de arranque. Puede utilizar maxPodsExpression en la NodeConfig o pasar --max-pods directamente a bootstrap.sh.

Consideraciones para el modo automático de EKS

El modo automático de EKS limita la cantidad de pods en los nodos al menor de los siguientes valores:

  • Límite fijo de 110 pods

  • El resultado del cálculo de pods máximos descrito anteriormente.