EKS y superar el limite de ips por nodo configurando VPC CNI Plugin

Como superar el limite de ips que establece AWS en EKS?.

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

  1. Iniciar Sesión en la Consola de AWS
  2. Seleccionar el Clúster EKS
  3. 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.
  4. 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.
  5. 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).

  1. Revisar y Confirmar
  2. 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.