Configura los Pods máximos por nodo


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.

Cuando se programa, GKE usa la cantidad máxima de Pods por nodo para determinar si hay capacidad suficiente para programar un Pod. Solo los Pods que se asignaron a un nodo y aún no se finalizaron (fase Failed o Succeeded), se cuentan en esta capacidad.

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.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Kubernetes Engine de Google.
  • Habilitar la API de Kubernetes Engine de Google
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.

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 los Pods máximos 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.

Puedes configurar el tamaño del rango de direcciones del Pod cuando creas un clúster con la CLI de gcloud o la consola de Google Cloud.

gcloud

Para establecer los Pods máximos predeterminados por nodo mediante la CLI 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.5.32.0/27 \
    --default-max-pods-per-node=MAXIMUM_PODS \
    --location=COMPUTE_LOCATION

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: La cantidad máxima predeterminada de Pods por nodo para tu clúster; se puede configurar hasta 256. Si se omite, Kubernetes asigna el valor predeterminado de 110.
  • COMPUTE_LOCATION: la ubicación de Compute Engine para el clúster nuevo.

Consola

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

    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 direcciones IP secundario para Pods del clúster 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 direcciones IP secundario para Pods en /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 direcciones IP secundario para Pods del clúster en /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 la consola de Google Cloud.

    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.

Acerca de la cantidad máxima predeterminada de Pods por nodo

De forma predeterminada, GKE permite hasta 110 Pods por nodo en clústeres estándar. Sin embargo, los clústeres estándar se pueden configurar para permitir hasta 256 Pods por nodo. Para los clústeres Autopilot, según la densidad esperada de Pods de carga de trabajo, elige el máximo de Pods por nodo de un rango entre 8 y 256. 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 de pod en clústeres Standard

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 256 Pods por nodo es un límite estricto, puedes reducir la cantidad de Pods en un nodo. El tamaño del bloque CIDR asignado a un nodo depende de la cantidad máxima de Pods por valor de nodo. 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 – 128 /24 256
129 - 256 /23 512

Rangos de CIDR del Pod en 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
  • Rango de direcciones IP secundario para Pods: /17
  • Rango de direcciones IP secundario para objetos Service: /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 direcciones IP secundario para Pods que especifiques sea lo suficientemente grande como para admitir el tamaño máximo previsto de 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.

¿Qué sigue?