En esta página, se explica cómo optimizar los recursos del clúster para garantizar una capacidad de programación suficiente para tus Pods configurando la cantidad máxima de Pods por nodo en los clústeres estándar de Google Kubernetes Engine (GKE). En esta página, se explica cómo la relación entre los Pods, los tamaños de los bloques CIDR y la cantidad de nodos influye en la forma en que GKE programa los Pods y asigna direcciones IP dentro de tu clúster. En esta página, también se incluyen detalles sobre las restricciones y los valores predeterminados para la cantidad máxima de Pods por nodo.
Esta página ayuda a los operadores, arquitectos de Cloud, desarrolladores e ingenieros de redes que aprovisionan y configuran recursos de Cloud, implementan apps y servicios, y administran las redes para sus implementaciones en la nube. Para obtener más información sobre los roles comunes y las tareas de ejemplo a los que se hace referencia en el contenido de Google Cloud, consulta Roles y tareas comunes de los usuarios de GKE.
Antes de leer esta página, familiarízate con cuándo usar clústeres de GKE Standard en lugar de Autopilot y el modelo de redes de Kubernetes.
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta el comando
gcloud components update
para obtener la versión más reciente. Es posible que las versiones anteriores de gcloud CLI no admitan la ejecución de los comandos que se describen en este documento.
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 la cantidad máxima de Pods por nodo en un clúster estándar cuando creas un clúster o un grupo de nodos. No puedes cambiar este parámetro de configuración después de crear el clúster o el grupo de nodos. En los clústeres de Autopilot, la cantidad máxima de nodos está preconfigurada y es inmutable.
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 gcloud CLI o la Google Cloud consola.
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 hasta256
. Si se omite, Kubernetes asigna el valor predeterminado de110
.COMPUTE_LOCATION
: la ubicación de Compute Engine para el clúster nuevo.
Console
En la consola de Google Cloud , ve a la página Crea un clúster de Kubernetes.
Configura tu nuevo clúster.
En el panel de navegación, en Clúster, haz clic en Redes.
Asegúrate de que la casilla de verificación Habilitar enrutamiento de tráfico nativo de VPC (usa IP de alias) esté seleccionada.
En el panel de navegación, en Grupos de nodos, haz clic en Nodos.
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.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. La asignación del rango de CIDR 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. La asignación del rango de CIDR 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 la cantidad máxima de Pods por nodo cuando creas un grupo de nodos en un clúster estándar 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 del 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
Ve a la página Google Kubernetes Engine en la consola de Google Cloud .
En la lista de clústeres, haz clic en el nombre del clúster que deseas modificar.
Haz clic en add_box Agregar grupo de nodos.
Desde el panel de navegación, haz clic en Nodos.
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.
Rangos secundarios de Pods y cantidad máxima de Pods por nodo
Cuando configuras la cantidad máxima de Pods por nodo, afectas indirectamente el tamaño requerido del rango secundario de Pods. GKE requiere un bloque CIDR mínimo de /24 por grupo de nodos. Si intentas especificar un rango secundario de Pods menor que /24 cuando creas un grupo de nodos, se produce el siguiente error:
Pod secondary range 'Pod' must have a CIDR block of at least /24
Si necesitas un rango menor que /24 para tu clúster general, puedes especificarlo a nivel del clúster con el argumento --cluster-ipv4-cidr de Google Cloud CLI. Para obtener más información, consulta Crea un clúster con un rango de CIDR específico. También puedes usar CIDR de varios Pods discontinuos para agregar más rangos de direcciones IP de Pod al clúster.
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 configures la cantidad máxima de Pods por nodo.
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. Los clústeres de Autopilot, según la densidad esperada de Pods de la carga de trabajo, eligen la cantidad máxima de Pods por nodo en un rango de 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 |
Consideraciones sobre el tamaño del clúster para el rango de direcciones IP secundario para Pods
Cuando creas un clúster, el tamaño del rango de direcciones IP secundario para los Pods es inmutable. Debes planificar cuidadosamente el tamaño de este rango para satisfacer tus necesidades de carga de trabajo actuales y futuras. El espacio de direcciones IP insuficiente para los Pods puede provocar fallas en la programación y evitar que tu clúster se escale.
Si no tienes certeza sobre el tamaño requerido, te recomendamos que comiences con un rango más amplio, como /21
, que es el valor predeterminado para los clústeres creados con Google Cloud CLI. Un rango más grande proporciona suficientes direcciones IP para un clúster de tamaño moderado y te brinda flexibilidad para el crecimiento futuro. Si te quedas sin direcciones IP de Pods, puedes usar el CIDR de varios Pods no contiguos para agregar más rangos de direcciones IP de Pods.
Sin embargo, si trabajas en un entorno con espacio de direcciones IP limitado, es posible que debas usar un rango más pequeño. En estos casos, puedes reducir la cantidad máxima de Pods por nodo. Reducir la cantidad máxima de Pods por nodo permite que cada nodo tenga un rango de CIDR de Pod más pequeño, lo que, a su vez, permite que más nodos quepan dentro de un rango secundario de Pod más pequeño para todo el clúster. La configuración es un equilibrio entre la densidad de Pods por nodo y la cantidad total de nodos en tu clúster.
Para calcular la cantidad máxima de Pods que admite tu clúster, debes proporcionar valores de entrada para la cantidad de Pods por nodo y los rangos de CIDR. GKE usa estas entradas para determinar el tamaño de los rangos de direcciones de tus nodos y Pods.
Valores especificados por el usuario
Estos son los valores que proporcionas cuando creas un clúster o un grupo de nodos.
Q
: Es la cantidad máxima de Pods por nodo.- En el caso de los clústeres de Autopilot,
Q
es fijo (actualmente, 32). - En los clústeres estándar, puedes configurar
Q
.
- En el caso de los clústeres de Autopilot,
DS
: Es la longitud del prefijo de la subred del Pod. Por ejemplo, para un rango de CIDR de/17
, la longitud del prefijo es17
.S
: Es la longitud del prefijo de la subred principal. Por ejemplo, para un rango de CIDR de/24
, la longitud del prefijo es24
.
Valores calculados
GKE calcula los siguientes valores según tus entradas.
M
: Es el tamaño de la máscara de red para el rango de Pods de cada nodo.none M = 31 - ⌈log₂(Q)⌉
Usa la función techo (⌈ ⌉
) para redondear al número entero más cercano.HM
: Es la cantidad de bits de host para la máscara de red del rango de Pods del nodo.none HM = 32 - M
HD
: Es la cantidad de bits de host para la máscara de red de subred de Pod CIDR seleccionada.none HD = 32 - DS
MN
: Es la cantidad máxima de nodos que puede admitir la subred de Pods.none MN = 2^(HD - HM)
MP
: Es la cantidad máxima de Pods que puede admitir la subred de Pods.none MP = MN * Q
N
: Es la cantidad de direcciones IP utilizables en el rango principal.none N = 2^(32-S) - 4
Notas importantes:
- Todas las direcciones IP del rango secundario se pueden usar para los Pods.
- Estos cálculos proporcionan los máximos teóricos. El rendimiento en el mundo real puede verse afectado por otros factores.
Ejemplo:
Supongamos que creas un clúster de GKE Autopilot con los siguientes parámetros:
- Un CIDR de subred de Pod de
/17
(DS
= 17). - Un máximo de 32 Pods por nodo (
Q
= 32)
Calcula la cantidad máxima de Pods:
M = 31 - ⌈log₂(32)⌉ = 26
HM = 32 - 26 = 6
HD = 32 - 17 = 15
MN = 2(15 - 6) = 512
MP = 512 * 32 = 16,384
Este clúster puede admitir un máximo de 512 nodos y 16,384 Pods.
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?
- Obtén información para crear clústeres nativos de VPC.
- Obtén más información para agregar direcciones IP de Pod adicionales a los clústeres.
- Obtén información sobre las estrategias de administración de direcciones IP cuando se migra a GKE.
- Obtén más información sobre las estadísticas de uso de direcciones IP de GKE.