Optimiza la asignación de direcciones IP

En esta página, se explica cómo configurar la cantidad máxima de Pods que pueden ejecutarse en un nodo para clústeres estándar. Este valor determina el tamaño de los rangos de direcciones IP que se asignan a los nodos en Google Kubernetes Engine (GKE). A los Pods que se ejecutan en un nodo se les asignan direcciones IP del rango CIDR del nodo.

Los pasos de esta página no se aplican a los clústeres de Autopilot porque la cantidad máxima de nodos está preconfigurada y es inmutable.

Descripción general

De forma predeterminada, GKE permite hasta 110 pods por nodo en los clústeres estándar. Los clústeres de Autopilot tienen un máximo de 32 pods por nodo. Kubernetes asigna a cada nodo un rango de direcciones IP, un bloque CIDR, de modo que cada pod pueda tener una dirección IP única. El tamaño del bloque CIDR corresponde al número máximo de pods por nodo.

Rangos de CIDR para clústeres estándar

Con el máximo predeterminado de 110 Pods por nodo para los clústeres estándar, Kubernetes asigna un bloque /24 CIDR (256 direcciones) a cada uno de los nodos. Dado que hay más del doble de direcciones IP disponibles que el máximo de Pods que se pueden crear en un nodo, Kubernetes puede reducir la reutilización de la dirección IP a medida que los Pods se agregan y quitan de un nodo.

A pesar de que tener 110 pods por nodo es un límite estricto, puedes reducir la cantidad de pods en un nodo. Si reduces el número del valor predeterminado, Kubernetes asigna al nodo un bloque CIDR correspondiente más pequeño. El bloque siempre contiene al menos el doble de direcciones que el número máximo de pods por nodo.

En la siguiente tabla, se muestra el tamaño del bloque CIDR y la cantidad correspondiente de direcciones IP disponibles que Kubernetes asigna a los nodos según la cantidad máxima de Pods por nodo:

Cantidad máxima de pods por nodo Rango CIDR por nodo Cantidad de direcciones IP
8 /28 16
9 – 16 /27 32
17 – 32 /26 64
33 – 64 /25 128
65 – 110 /24 256

Configuración de CIDR para clústeres de Autopilot

La configuración predeterminada para los tamaños de CIDR del clúster de Autopilot es la siguiente:

  • Rango de subred: /23
  • CIDR de IPv4 de clúster (rango para Pods): /17
  • CIDR de IPv4 de servicios (rango para servicios): /22

Autopilot tiene un máximo de pods por nodo de 32. Al igual que con GKE Standard, esto da como resultado un rango de /26 que se aprovisiona por nodo, es decir, 64 IP. Un rango de direcciones de pods de /17 genera un clúster que puede admitir como máximo 511 nodos (32,766 IP utilizables / 64 direcciones IP por nodo).

Asegúrate de que el rango de CIDR de la dirección del pod que especifiques sea lo suficientemente grande como para admitir el tamaño máximo previsto del clúster. Se recomienda un rango de /16 (por ejemplo, cluster-ipv4-cidr=10.0.0.0/16) para admitir el crecimiento máximo del clúster.

Reduce la cantidad máxima de Pods

La reducción del número máximo de Pods por nodo permite que el clúster tenga más nodos, ya que cada nodo requiere una parte más pequeña del espacio total de direcciones IP. De manera alternativa, podrías admitir la misma cantidad de nodos en el clúster especificando un espacio de dirección IP más pequeño para los Pods en el momento de la creación del clúster.

La reducción del número máximo de Pods por nodo también te permite crear clústeres más pequeños que requieren menos direcciones IP. Por ejemplo, con ocho pods por nodo, a cada nodo se le otorga un CIDR /28. Estos rangos de direcciones IP más la subred y los rangos secundarios que defines determinan la cantidad de direcciones IP necesarias para crear un clúster de forma correcta.

Puedes configurar la cantidad máxima de Pods por nodo en el momento de creación de clústeres y en el momento de creación del grupo de nodos.

Restricciones

  • Solo puedes configurar los Pods máximos por nodo en clústeres nativos de VPC.
  • La creación de nodos está limitada por el número de direcciones disponibles en el rango de direcciones del Pod. Consulta la tabla de planificación de rangos de direcciones IP para conocer los tamaños de rango de dirección de pod predeterminados, mínimos y máximos. También puedes agregar direcciones IP de pod adicionales mediante CIDR de varios pods no contiguos.
  • Cada clúster debe crear Pods de kube-system, como kube-proxy, en el espacio de nombres kube-system. Recuerda tener en cuenta los Pods de la carga de trabajo y los del sistema cuando reduzcas la cantidad máxima de Pods por nodo. Para enumerar los Pods del sistema en el clúster, ejecuta el siguiente comando:

    kubectl get pods --namespace kube-system
    

Configura la cantidad máxima de pods por nodo

Puedes configurar el número máximo de Pods por nodo cuando creas un clúster o un grupo de nodos. No puedes cambiar esta configuración después de crear el clúster o el grupo de nodos.

Sin embargo, si te quedas sin direcciones IP de pods, puedes crear rangos de direcciones IP de pods adicionales mediante el CIDR de varios pods no contiguos (vista previa).

Puedes configurar el tamaño del rango de direcciones del pod cuando creas un clúster con la herramienta de gcloud o Google Cloud Console.

gcloud

Para establecer los pods máximos predeterminados por nodo mediante la herramienta de gcloud, ejecuta el siguiente comando:

gcloud container clusters create CLUSTER_NAME \
  --enable-ip-alias \
  --cluster-ipv4-cidr 10.0.0.0/21 \
  --services-ipv4-cidr 10.4.0.0/19 \
  --create-subnetwork name='SUBNET_NAME',range=10.4.32.0/27 \
  --default-max-pods-per-node MAXIMUM_PODS \
  --zone COMPUTE_ZONE

Reemplaza lo siguiente:

  • CLUSTER_NAME: Es el nombre del clúster nuevo.
  • SUBNET_NAME: es el nombre de la subred nueva del clúster.
  • MAXIMUM_PODS: es la cantidad máxima predeterminada de Pods por nodo para tu clúster. Si se omite, Kubernetes asigna el valor predeterminado de 110.
  • COMPUTE_ZONE: eE la zona de procesamiento del nuevo clúster.

Console

  1. Ve a la página Google Kubernetes Engine en Cloud Console.

    Ir a Google Kubernetes Engine

  2. Haz clic en Crear.

  3. Configura tu nuevo clúster.

  4. En el panel de navegación, en Clúster, haz clic en Redes.

  5. Asegúrate de que la casilla de verificación Habilitar enrutamiento de tráfico nativo de VPC (usa IP de alias) esté seleccionada.

  6. En el panel de navegación, en Grupos de nodos, haz clic en Nodos.

  7. Establece el campo Máximo de pods por nodo en 110. GKE usa este valor para ajustar el tamaño del rango de direcciones IP asignado a los nodos.

  8. Haz clic en Crear.

Cuando configuras la cantidad máxima de Pods por nodo para el clúster, Kubernetes usa este valor a fin de asignar un rango de CIDR para los nodos. Puedes calcular la cantidad máxima de nodos en el clúster según el rango de CIDR de IPv4 del clúster para los Pods y el rango de CIDR asignado al nodo.

Por ejemplo, si estableces la cantidad máxima predeterminada de Pods en 110 y el rango de CIDR de IPv4 del clúster para /21, Kubernetes asigna un rango de CIDR /24 a los nodos del clúster. Esto permite un máximo de 2(24-21) = 23 = 8 nodos en el clúster.

Del mismo modo, si estableces el máximo predeterminado de Pods en 8 y el rango de CIDR de IPv4 del clúster para /21, Kubernetes asigna un rango de CIDR/28 a los nodos. Esto permite un máximo de 2(28-21) = 27 = 128 nodos en el clúster.

Establece la cantidad máxima de pods en un grupo de nodos nuevo para un clúster existente

También puedes especificar el número máximo de pods por nodo mediante la creación de un grupo de nodos en un clúster existente. La creación de un nuevo grupo de nodos te permite optimizar la asignación de la dirección IP, incluso en clústeres existentes en los que no hay una cantidad máxima predeterminada configurada de pods por nodo a nivel de clúster.

Establecer la cantidad máxima de Pods en el nivel de grupo de nodos anula el máximo predeterminado a nivel de clúster. Si no configuras una cantidad máxima de Pods por nodo cuando creas el grupo de nodos, se aplica el máximo a nivel de clúster.

gcloud

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --max-pods-per-node MAXIMUM_PODS

Reemplaza lo siguiente:

  • POOL_NAME: es el nombre de tu grupo de nodos nuevo.
  • CLUSTER_NAME: es el nombre del clúster en el que deseas crear el grupo de nodos.
  • MAXIMUM_PODS: La cantidad máxima de pods en el grupo de nodos.

Console

  1. Ve a la página de Google Kubernetes Engine en Cloud Console:

    Ir a Google Kubernetes Engine

  2. En la lista de clústeres, haz clic en el nombre del clúster que deseas modificar.

  3. Haz clic en Agregar grupo de nodos.

  4. Desde el panel de navegación, haz clic en Nodos.

  5. En Herramientas de redes, ingresa un valor para el campo Máximo de Pods por nodo. GKE usa este valor para ajustar el tamaño del rango de direcciones IP asignado a los nodos.

¿Qué sigue?