Problema
Si intentamos configurar por primera ves un un cluster Kubernetes utilizando EKS en cuanto empecemos a desplegar pods vamos a encontrarnos con el problema de que los nodos tienen un limite pods! Esto varia según el tipo de instancia que utilicemos y la cantidad de ENIs que puedan manejar (+Enis=+Ips), pero muchas veces si necesitamos utilizar instancias chicas (menos costos) y muchos pods (con bajo consumo de recursos) es conveniente aumentar este limite por defecto.
Porque ?
La documentación de amazon-vpc-cni-k8s nos indica la (cantidad de ENIs+ips por instancia y el calculo) que tenemos que hacer para saber cual es limite.
Por ejemplo con una instancia t3a.medium
tengo un máximo de 17 pods porque:
- Puede usar hasta 3 interfaces de red (ENIs).
- Cada ENI puede tener hasta 6 direcciones IP, pero 1 se reserva para la propia instancia.
Entonces, el cálculo es:
- 2 ENIs disponibles para pods, con 5 direcciones IP por ENI.
- Total de (2 ENIs x 5 IPs) = 10 direcciones IP para pods adicionales.
Sumando la IP principal, da un total de 17 direcciones IP: 1 para la instancia y 16 para los pods.
Solución ?
La solución mas simple y rápida que encontré fue instalar el plugin amazon-vpc-cni-k8s y aplicar las configuraciones para hacer subfix con las ENIs, permitiéndonos agregar rangos /28
(14 direcciones IP utilizables de un total de 16) a cada una de las ENIs que le corresponden a una instancia. En el caso de una t3a.medium esto nos daría un total de 42 pods con el calculo anterior.
Al momento de aplicar esta configuración ES NECESARIO eliminar y volver a crear nuestros nodegroups para que estos tomen el cambio y EKS pase a mostrarnos el limite estandar Kubernetes de 110 pods
Instalación y configuración
- Iniciar Sesión en la Consola de AWS
- Seleccionar el Clúster EKS
- Acceder a la Página de Complementos: En el panel de navegación de la izquierda, haz clic en Complementos. Aquí verás una lista de complementos instalados y la opción de agregar uno nuevo.
- Agregar el Complemento VPC CNI: Haz clic en el botón Agregar complemento. En la sección de Complemento, selecciona Amazon VPC CNI. En Versión del complemento, elige la versión más reciente o la que desees instalar. Haz clic en Siguiente.
- Configurar Parámetros del Complemento:
{
"env": {
"ENABLE_PREFIX_DELEGATION": "true",
"MINIMUM_IP_TARGET": "5",
"WARM_ENI_TARGET": "1",
"WARM_IP_TARGET": "2"
}
}
ENABLE_PREFIX_DELEGATION: Activa la delegación de prefijos en las subredes para permitir la asignación eficiente de bloques de direcciones IP para los pods.
MINIMUM_IP_TARGET: Establece el número mínimo de direcciones IP que deben permanecer disponibles en el nodo para nuevos pods.
WARM_ENI_TARGET: Define cuántas ENIs adicionales deben mantenerse disponibles (calientes) en el nodo para asignaciones rápidas de direcciones IP.
WARM_IP_TARGET: Especifica cuántas direcciones IP adicionales deben mantenerse “calientes” en cada ENI para permitir la escalabilidad rápida de los pods (en este caso, 2).
- Revisar y Confirmar
- Verificar la Instalación: Después de agregar el complemento, puedes verificar que se haya instalado correctamente y que los pods estén corriendo. Si había un nodegroup creado, es necesario borrarlo y volver a crearlo para que tome el cambio.