En esta página se explica cómo asignar subredes adicionales a un clúster nativo de VPC. Las subredes adicionales asignadas a un clúster te permiten crear grupos de nodos en los que las direcciones IPv4 de los nodos y los pods proceden de los intervalos de subredes adicionales.
Esta página está dirigida a especialistas en redes que diseñan y crean la red de su organización. Para obtener más información sobre los roles habituales y las tareas de ejemplo a los que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas habituales de los usuarios de GKE Enterprise.
Información general
Cuando creas un clúster de GKE nativo de VPC, seleccionas una subred predeterminada para el clúster. La subred predeterminada del clúster proporciona direcciones IPv4 para nodos, pods y servicios, tal como se describe en Intervalos de direcciones IP para clústeres nativos de VPC.
Puedes asignar hasta ocho subredes adicionales a un clúster nativo de VPC, lo que permite que el clúster crezca de forma significativa. Cada subred adicional que se asigna se denomina subred no predeterminada.
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
.
Requisitos y limitaciones
En esta sección se describen los requisitos y las limitaciones que se aplican al asignar y usar subredes adicionales en un clúster. Debes cumplir todos los requisitos antes de asignar subredes adicionales.
- Asegúrate de que tu clúster de GKE sea un clúster nativo de VPC que ejecute la versión 1.30.3-gke.1211000 de GKE o una posterior. Los clústeres basados en rutas y los clústeres de redes antiguas no admiten subredes adicionales.
- Puedes asignar hasta ocho subredes adicionales por clúster.
- Las subredes adicionales solo proporcionan direcciones IPv4 para nodos y pods. No se pueden usar subredes adicionales para proporcionar direcciones IPv6 a nodos o pods.
- Solo los grupos de nodos nuevos pueden usar las subredes adicionales, no los que ya existen. Cuando creas un grupo de nodos y hay varias subredes no predeterminadas disponibles, GKE selecciona la mejor subred para el grupo de nodos en función de los requisitos de direcciones IP y la disponibilidad de direcciones IP en todas las subredes del clúster.
- Los intervalos de direcciones IPv4 secundarias de una subred que no sea la predeterminada solo se pueden usar en un clúster.
- Si utilizas la compatibilidad con varias redes para los pods, los intervalos de direcciones IPv4 principales y de los pods de una subred adicional no deben superponerse con ningún intervalo CIDR configurado en tu configuración de varias redes. Las subredes adicionales que configures solo se aplicarán a la red predeterminada. Esta limitación implica que las interfaces de red adicionales de tus nodos y pods no pueden usar las direcciones IP proporcionadas por estas subredes adicionales.
- Si se agota el conjunto de direcciones IP de la subred predeterminada, no podrás escalar automáticamente tu clúster, aunque uses subredes adicionales.
Requisitos de balanceador de carga para clústeres con subredes adicionales
En esta sección se describen los requisitos del balanceador de carga que se aplican cuando usas subredes adicionales en tu clúster. Estos requisitos se aplican cada vez que creas un Ingress externo, una Gateway externa o un servicio LoadBalancer externo.
- Para usar un servicio Ingress, Gateway o LoadBalancer externo en un clúster con subredes adicionales, el clúster debe ejecutar la versión 1.33.2-gke.4780000 de GKE o una posterior.
- Los objetos Ingress externos que usan el controlador de Ingress de GKE deben usar el balanceo de carga nativo de contenedores.
- Habilita el subconjunto de GKE para los servicios LoadBalancer internos. La creación de subconjuntos de GKE solo afecta a los servicios de balanceadores de carga internos nuevos. Por lo tanto, debes eliminar y volver a crear los servicios que haya en tu clúster después de habilitar la creación de subconjuntos de GKE.
Para crear un balanceador de carga de red de paso a través externo basado en un servicio de backend, los nuevos servicios LoadBalancer externos deben incluir la anotación
cloud.google.com/l4-rbs: "enabled"
. Esta anotación solo afecta a los servicios LoadBalancer externos nuevos y no se aplica a los servicios LoadBalancer externos que ya existen. Elimina y vuelve a crear todos los servicios de tipo LoadBalancer externos que se hayan creado sin la anotacióncloud.google.com/l4-rbs: "enabled"
.El tipo de backend que se utiliza (
GCE_VM_IP
backends de NEG o backends de grupo de instancias) depende de la versión de GKE cuando creas el servicio LoadBalancer externo. Para obtener más información, consulta Agrupación de nodos.
Añadir una subred con un intervalo de direcciones IPv4 de pods
Crea una subred y añade un intervalo de direcciones IPv4 secundarias. La subred debe estar en la misma región y red de VPC que el clúster:
gcloud compute networks subnets create SUBNET_NAME \ --network=NETWORK \ --region=REGION \ --range=PRIMARY_RANGE \ --add-secondary-ranges=POD_RANGE_NAME=SECONDARY_RANGE
Haz los cambios siguientes:
SUBNET_NAME
: el nombre de la nueva subred.NETWORK
: nombre de la red de VPC que contiene la nueva subred.REGION
: la región en la que se encuentra la subred.PRIMARY_RANGE
: el intervalo IPv4 principal de la nueva subred, en notación CIDR. Para obtener más información, consulta la sección sobre los intervalos de subredes IPv4.POD_RANGE_NAME
: un nombre para el intervalo secundario.SECONDARY_RANGE
: el intervalo IPv4 secundario en notación CIDR. Para ver los intervalos válidos, consulta Intervalos de subred IPv4.
Para obtener más información, consulta Trabajar con subredes.
Actualiza tu clúster para que use la subred adicional con la CLI de gcloud:
gcloud container clusters update CLUSTER_NAME \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.SUBNET_NAME
: el nombre de la nueva subred que has creado.POD_RANGE_NAME
: el nombre del intervalo de direcciones IPv4 secundario de la subred que quieras usar para el intervalo de direcciones IPv4 de los pods.
Añadir una subred con varios intervalos de direcciones IPv4 de pods
Crea una subred en la misma región y red VPC que el clúster. Define el intervalo de direcciones IPv4 principal de la subred como un intervalo de direcciones IPv4 adicional para los nodos.
Por cada intervalo de direcciones IPv4 de Pod adicional que necesites, añade una nueva subred intervalo de direcciones IPv4 secundario a la subred que has creado en el paso anterior.
Actualiza el clúster para que use la subred adicional con la CLI de gcloud. En el siguiente ejemplo se añade una subred que tiene dos intervalos de direcciones IPv4 secundarias de subred para los pods.
gcloud container clusters update CLUSTER_NAME \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_1 \ --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME_2
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.SUBNET_NAME
: el nombre de la nueva subred que has creado.POD_RANGE_NAME_1
yPOD_RANGE_NAME_2
: los nombres de los intervalos de direcciones IPv4 secundarias de la subred que quieras usar para los intervalos de direcciones IPv4 de los pods.
Verificar las subredes
Por clúster: para ver los detalles de todas las subredes asociadas a un clúster, ejecuta el siguiente comando:
gcloud container clusters describe CLUSTER_NAME
Sustituye CLUSTER_NAME
por el nombre de tu clúster.
El resultado debería ser similar al siguiente:
ipAllocationPolicy:
additionalIPRangesConfig:
- podIpv4RangeNames:
- pod-range-1
subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets
Por grupo de nodos: para ver los detalles de todas las subredes asociadas a un grupo de nodos, ejecuta el siguiente comando:
gcloud container node-pools describe POOL_NAME \
--cluster=CLUSTER_NAME \
Haz los cambios siguientes:
POOL_NAME
: el nombre del grupo de nodos.CLUSTER_NAME
: el nombre del clúster.
El resultado debería ser similar al siguiente:
name: pool-1
networkConfig:
podRange: pod-range-1
subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets
Eliminar una subred que no sea predeterminada
Si quitas una subred no predeterminada de un clúster, se le indica al clúster que deje de usar los intervalos de la subred en cualquiera de los grupos de nodos del clúster. Si quitas un perfil, ocurrirá lo siguiente:
- El intervalo de direcciones IPv4 principal de la subred no predeterminada no se puede usar para los intervalos de direcciones IPv4 de los nodos.
- Los intervalos de IPv4 secundarios de la subred de la subred no predeterminada no se pueden usar para los intervalos de IPv4 de los pods.
Antes de eliminar una subred que no sea la predeterminada, debes eliminar todos los grupos de nodos que usen esta subred.
Para quitar una subred no predeterminada del clúster, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \
--remove-additional-ip-ranges= subnetwork=SUBNET_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre de tu clúster.SUBNET_NAME
: el nombre de la subred que quieras quitar del clúster.
Después de quitar una subred no predeterminada del clúster, puedes eliminarla.
Quitar un intervalo de IPv4 secundario de una subred no predeterminada
Cuando quitas un intervalo de IPv4 secundario de una subred no predeterminada de un clúster, GKE indica al clúster que no use ese intervalo para los intervalos de IPv4 de los pods en ningún grupo de nodos. Si el intervalo IPv4 secundario de la subred no predeterminada que eliminas es el único intervalo de la subred no predeterminada que usa este clúster, GKE también indica al clúster que deje de usar la dirección IPv4 principal de esta subred para las direcciones IPv4 de los nodos.
Antes de quitar un intervalo de IPv4 secundario de una subred que no sea la predeterminada, debes eliminar todos los grupos de nodos que utilicen el intervalo para las direcciones IPv4 de los pods.
Para quitar un intervalo de IPv4 secundario de una subred no predeterminada del clúster, ejecuta el siguiente comando:
gcloud container clusters update CLUSTER_NAME \
--remove-additional-ip-ranges=\
subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
Haz los cambios siguientes:
CLUSTER_NAME
: el nombre del clúster.SUBNET_NAME
: el nombre de la subred no predeterminada.POD_RANGE_NAME
: el nombre de la subred no predeterminada del intervalo IPv4 secundario que quieres quitar del clúster.
Después de quitar un intervalo de IPv4 secundario de una subred no predeterminada del clúster, puedes eliminar el intervalo de IPv4 secundario de la subred no predeterminada.
Siguientes pasos
- Más información sobre los clústeres nativos de VPC
- Consulta más información sobre cómo añadir intervalos de direcciones IPv4 de pods.
- Consulta más información sobre cómo optimizar la asignación de direcciones IP configurando el número máximo de pods por nodo.