En esta página se explica cómo optimizar los recursos del clúster para asegurar que tus pods tengan suficiente capacidad de programación. Para ello, debes configurar el número máximo de pods por nodo en los clústeres estándar de Google Kubernetes Engine (GKE). En esta página se explica cómo influye la relación entre los pods, los tamaños de los bloques CIDR y el número de nodos en la forma en que GKE programa los pods y asigna direcciones IP en tu clúster. También incluye detalles sobre las restricciones y los valores predeterminados del número máximo de pods por nodo.
Esta página ayuda a los operadores, arquitectos de la nube, desarrolladores e ingenieros de redes que aprovisionan y configuran recursos en la nube, despliegan aplicaciones y servicios, y gestionan las redes de sus despliegues en la nube. Para obtener más información sobre los roles habituales y las tareas de ejemplo que se mencionan en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud
Antes de leer esta página, familiarízate con cuándo usar el modo Estándar de GKE en lugar de Autopilot y con el modelo de red de Kubernetes.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
Restricciones
- Solo puedes configurar el número máximo de pods por nodo en clústeres nativos de VPC.
- La creación de nodos está limitada por el número de direcciones disponibles en el intervalo de direcciones de pods. Consulta la tabla de planificación del intervalo de direcciones IP para ver los tamaños predeterminados, mínimos y máximos del intervalo de direcciones de los pods. También puedes añadir más direcciones IP de pods mediante CIDR de varios pods no contiguos.
Cada clúster debe crear pods kube-system, como kube-proxy, en el espacio de nombres
kube-system
. Recuerda que debes tener en cuenta tanto los pods de carga de trabajo como los pods del sistema cuando reduzcas el número máximo de pods por nodo. Para ver una lista de los pods del sistema de tu clúster, ejecuta el siguiente comando:kubectl get pods --namespace kube-system
Configurar el número máximo de pods por nodo
Puedes configurar el número máximo de pods por nodo en un clúster estándar al crear un clúster o un grupo de nodos. No puedes cambiar este ajuste después de crear el clúster o el grupo de nodos. En los clústeres de Autopilot, el número máximo de nodos está preconfigurado y es inmutable.
Sin embargo, si te quedas sin direcciones IP de pods, puedes crear intervalos de direcciones IP de pods adicionales mediante CIDR de varios pods no contiguos.
Puedes definir el tamaño del intervalo de direcciones de los pods al crear un clúster mediante la CLI de gcloud o la Google Cloud consola.
gcloud
Para definir el número máximo predeterminado de pods por nodo con gcloud CLI, 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
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del nuevo clúster.SUBNET_NAME
: el nombre de la nueva subred de tu clúster.MAXIMUM_PODS
: número máximo predeterminado de pods por nodo de tu clúster. Se puede configurar hasta256
. Si se omite, Kubernetes asigna el valor predeterminado110
.COMPUTE_LOCATION
: la ubicación de Compute Engine del nuevo clúster.
Consola
En la Google Cloud consola, ve a la página Crear un clúster de Kubernetes.
Configura tu nuevo clúster.
En el panel de navegación, ve a Clúster y haz clic en Redes.
Asegúrate de que la casilla Habilitar el enrutamiento del tráfico nativo de VPC (usa IP de alias) esté marcada.
En el panel de navegación, vaya a Grupos de nodos y haga clic en Nodos.
En el campo Número máximo de pods por nodo, introduzca
110
. GKE usa este valor para ajustar el tamaño del intervalo de direcciones IP asignado a los nodos.Haz clic en Crear.
Cuando configuras el número máximo de pods por nodo del clúster, Kubernetes usa este valor para asignar un intervalo CIDR a los nodos. Puedes calcular el número máximo de nodos del clúster en función del intervalo de direcciones IP secundarias del clúster para los pods y del intervalo CIDR asignado al nodo.
Por ejemplo, si defines el número máximo predeterminado de pods en 110
y el intervalo de direcciones IP secundarias de los pods en /21
, Kubernetes asigna un intervalo 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 defines el número máximo de pods predeterminado en 8
y el intervalo de direcciones IP secundarias del clúster para los pods en /21
, Kubernetes asigna un intervalo CIDR /28
a los nodos. Esto permite un máximo de 2(28-21) = 27 = 128
nodos en el clúster.
Configurar el número máximo de pods en un grupo de nodos nuevo de un clúster
También puedes especificar el número máximo de pods por nodo al crear un grupo de nodos en un clúster estándar. Crear un grupo de nodos te permite optimizar la asignación de direcciones IP, incluso en clústeres en los que no se haya configurado un número máximo predeterminado de pods por nodo a nivel de clúster.
Si se define el número máximo de pods a nivel de grupo de nodos, se anula el valor máximo predeterminado a nivel de clúster. Si no configuras un número máximo de pods por nodo al crear el grupo de nodos, se aplicará 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
Haz los cambios siguientes:
POOL_NAME
: el nombre del nuevo grupo de nodos.CLUSTER_NAME
: el nombre del clúster en el que quieres crear el grupo de nodos.MAXIMUM_PODS
: número máximo de pods del grupo de nodos.
Consola
Ve a la página Google Kubernetes Engine en la consola de Google Cloud .
En la lista de clústeres, haga clic en el nombre del clúster que quiera modificar.
Haz clic en add_box Añadir grupo de nodos.
En el panel de navegación, haga clic en Nodos.
En Networking (Redes), introduce un valor en el campo Maximum Pods per node (Número máximo de pods por nodo). GKE usa este valor para ajustar el tamaño del intervalo de direcciones IP asignado a los nodos.
Intervalos secundarios de pods y número máximo de pods por nodo
Cuando configuras el número máximo de pods por nodo, influyes indirectamente en el tamaño necesario del intervalo secundario de pods. GKE requiere un bloque CIDR mínimo de /24 por grupo de nodos. Si intentas especificar un intervalo secundario de pods inferior a /24 al crear un grupo de nodos, se producirá el siguiente error:
Pod secondary range 'Pod' must have a CIDR block of at least /24
Si necesitas un intervalo menor que /24 para todo el clúster, puedes especificarlo a nivel de clúster con el argumento --cluster-ipv4-cidr de la CLI de Google Cloud. Para obtener más información, consulta Crear un clúster con un intervalo CIDR específico. También puedes usar CIDR de varios pods no contiguos para añadir más intervalos de direcciones IP de pods al clúster.
Cada clúster debe crear pods kube-system, como kube-proxy, en el espacio de nombres kube-system. Cuando configures el número máximo de pods por nodo, ten en cuenta tanto los pods de carga de trabajo como los pods del sistema.
Acerca del número máximo predeterminado de pods por nodo
De forma predeterminada, GKE permite hasta 110 pods por nodo en los clústeres estándar. Sin embargo, los clústeres estándar se pueden configurar para permitir hasta 256 pods por nodo. Los clústeres Autopilot, en función de la densidad de pods de la carga de trabajo prevista, eligen el número máximo de pods por nodo de un intervalo entre 8 y 256. Kubernetes asigna a cada nodo un intervalo de direcciones IP, un bloque CIDR, para 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.
Intervalos CIDR de pods en clústeres estándar
Con el máximo predeterminado de 110 pods por nodo en los clústeres estándar, Kubernetes asigna un bloque CIDR /24 (256 direcciones) a cada uno de los nodos. Al tener más del doble de direcciones IP disponibles que el número máximo de pods que se pueden crear en un nodo, Kubernetes puede reducir la reutilización de direcciones IP a medida que se añaden y se eliminan pods de un nodo.
Aunque el límite de 256 pods por nodo es fijo, puedes reducir el número de pods de un nodo. El tamaño del bloque CIDR asignado a un nodo depende del valor máximo de pods por 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 indica el tamaño del bloque CIDR y el número correspondiente de direcciones IP disponibles que Kubernetes asigna a los nodos en función del número máximo de pods por nodo:
Número máximo de pods por nodo | Intervalo CIDR por nodo | Número 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 |
Intervalos CIDR de pods en clústeres de Autopilot
En los clústeres de GKE Autopilot, el número máximo de pods por nodo y la asignación de bloques CIDR asociada son dinámicos. Esto significa que pueden variar en función de la versión de GKE y de la densidad de la carga de trabajo.
Versiones 1.27 y anteriores de Autopilot de GKE: el número máximo de pods por nodo es 32. De este modo, se asigna a cada nodo un bloque CIDR /26 (64 direcciones IP).
Versiones 1.28 y posteriores de Autopilot de GKE: el número máximo de pods por nodo es dinámico y puede oscilar entre 8 y 256. El tamaño del bloque CIDR se ajusta en consecuencia para asegurarse de que cada pod tenga una dirección IP única.
La naturaleza dinámica del número máximo de pods por nodo en los clústeres de Autopilot permite un uso eficiente de los recursos. El clúster se adapta automáticamente a los requisitos de la carga de trabajo, asignando el número adecuado de pods y direcciones IP por nodo.
Para adaptarse al tamaño inicial del clúster y a la configuración de número máximo de pods por nodo, seleccione un intervalo de direcciones IP secundarias adecuado para los pods. Te recomendamos que planifiques cuidadosamente el direccionamiento IP. Sin embargo, si agotas las direcciones IP a medida que se escala el clúster, se impedirá que se siga escalando hasta que se añadan más direcciones IP. Si es necesario, puede añadir más intervalos secundarios más adelante. Para obtener más información sobre cómo añadir más intervalos de direcciones IP después de crear el clúster, consulta Añadir intervalos secundarios a una red de VPC.
Por lo general, se recomienda un intervalo de /16 (por ejemplo, cluster-ipv4-cidr=240.0.0.0/16) para ofrecer flexibilidad ante el crecimiento y los cambios en la densidad de los pods del clúster.
Ten en cuenta los siguientes puntos al planificar la configuración de red de tu clúster Autopilot:
- Densidad de pods: ten en cuenta el número máximo de pods de tu clúster que pueden necesitar tus cargas de trabajo.
- Intervalo CIDR: elige un intervalo de direcciones IP secundario para los pods que pueda adaptarse tanto al tamaño del clúster como a los requisitos de densidad de los pods.
- Flexibilidad: un intervalo CIDR más grande, como /16, ofrece más flexibilidad para el crecimiento futuro y los cambios en la densidad de los pods.
Si planificas cuidadosamente tu intervalo CIDR, puedes asegurarte de que tu clúster Autopilot pueda escalarse inicialmente para satisfacer tus necesidades. Sin embargo, si te encuentras con limitaciones de direcciones IP a medida que crece tu clúster, puedes añadir intervalos secundarios adicionales para admitir más escalado.
Reducir el número máximo de pods
Si se reduce el número máximo de pods por nodo, el clúster puede tener más nodos, ya que cada nodo requiere una parte más pequeña del espacio total de direcciones IP. También puedes admitir el mismo número de nodos en el clúster especificando un espacio de direcciones IP más pequeño para los pods al crear el clúster.
Si reduces el número máximo de pods por nodo, también podrás crear clústeres más pequeños que requieran menos direcciones IP. Por ejemplo, con ocho pods por nodo, cada nodo recibe un CIDR /28. Estos intervalos de direcciones IP, junto con los intervalos de subred y secundarios que definas, determinan el número de direcciones IP necesarias para crear un clúster correctamente.
Puedes configurar el número máximo de pods por nodo al crear el clúster y al crear el grupo de nodos.
Siguientes pasos
- Consulta cómo crear clústeres nativos de VPC.
- Consulta cómo añadir direcciones IP de pods adicionales a los clústeres.
- Consulta las estrategias de gestión de direcciones IP al migrar a GKE.
- Consulta información sobre las estadísticas de uso de las direcciones IP de GKE.