Agrega subredes a los clústeres

En esta página, se muestra cómo asignar subredes adicionales a un clúster nativo de la VPC. Las subredes adicionales asignadas a un clúster te permiten crear grupos de nodos nuevos en los que las direcciones IPv4 para los nodos y los Pods provienen de los rangos de subred adicionales.

Esta página está dirigida a especialistas en redes que diseñan la red para su organización. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Trusted Cloud by S3NS , consulta Roles y tareas comunes de los usuarios de GKE.

Descripción general

Cuando creas un clúster de GKE nativo de la VPC nuevo, seleccionas una subred predeterminada para el clúster. La subred predeterminada del clúster proporciona direcciones IPv4 para nodos, Pods y Services, como se describe en Rangos de direcciones IP para clústeres nativos de la VPC.

Puedes asignar hasta ocho subredes adicionales a un clúster nativo de la VPC, lo que permite un crecimiento significativo del clúster. Cada subred adicional recién asignada se denomina subred no predeterminada.

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 quieres 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.

Requisitos y limitaciones

En esta sección, se describen los requisitos y las limitaciones que se aplican cuando asignas y usas subredes adicionales en un clúster. Debes cumplir con todos los requisitos antes de asignar subredes adicionales.

  • Asegúrate de que tu clúster de GKE sea un clúster nativo de la VPC que ejecute la versión 1.30.3-gke.1211000 o posterior de GKE. Los clústeres basados en rutas y los clústeres en redes heredadas 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 para nodos o Pods.
  • Solo los grupos de nodos nuevos pueden usar las subredes adicionales, no los grupos de nodos existentes. Cuando creas un grupo de nodos nuevo y hay varias subredes no predeterminadas disponibles, GKE selecciona la mejor subred para el grupo de nodos según los requisitos de direcciones IP y la disponibilidad de direcciones IP en todas las subredes del clúster.
  • Los rangos de direcciones IPv4 secundarias de la subred en una subred no predeterminada solo pueden ser utilizados por un solo clúster.
  • Si usas la compatibilidad con varias redes para Pods, los rangos de direcciones IPv4 principales y de Pod de una subred adicional no deben superponerse con ningún rango de CIDR configurado en tu configuración de varias redes. Las subredes adicionales que configures se aplicarán solo a la red predeterminada. Esta limitación significa que las interfaces de red adicionales en tus nodos y Pods no pueden usar las direcciones IP proporcionadas por estas subredes adicionales.
  • Si se agota el grupo de direcciones IP en la subred predeterminada, no podrás escalar automáticamente tu clúster, incluso si usas subredes adicionales.

Requisitos del balanceador de cargas para clústeres con subredes adicionales

En esta sección, se describen los requisitos del balanceador de cargas que se aplican cuando usas subredes adicionales en tu clúster. Estos requisitos se aplican cada vez que creas un Ingress externo, una puerta de enlace externa o un Service LoadBalancer externo.

  • Para usar un objeto Ingress, una puerta de enlace o un Service LoadBalancer externo en un clúster con subredes adicionales, tu 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 cargas nativo del contenedor.
  • Habilita la subdivisión de GKE para los objetos Service LoadBalancer internos. La subdivisión de GKE solo afecta a los Services LoadBalancer internos nuevos. Por lo tanto, debes borrar y volver a crear los Services existentes en tu clúster después de habilitar la subdivisión de GKE.
  • Para crear un balanceador de cargas de red de transferencia externo basado en servicios de backend, los nuevos objetos Service LoadBalancer externos deben incluir la anotación cloud.google.com/l4-rbs: "enabled". Esta anotación solo afecta a los objetos Service LoadBalancer externos nuevos y no se aplica a los objetos Service LoadBalancer externos existentes. Borra y vuelve a crear todos los objetos Service LoadBalancer externos que se crearon sin la anotación cloud.google.com/l4-rbs: "enabled".

    El tipo de backend que se usa (backends de NEG GCE_VM_IP o backends de grupos de instancias) depende de la versión de GKE cuando creas el objeto Service LoadBalancer externo. Para obtener más información, consulta Agrupación de nodos.

Agrega una subred nueva con un rango de direcciones IPv4 de Pod

  1. Crea una subred nueva y agrega un nuevo rango de direcciones IPv4 secundario de la subred. 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
    

    Reemplaza lo siguiente:

    • SUBNET_NAME: es el nombre de la subred nueva.
    • NETWORK: Es el nombre de la red de VPC que contiene la subred nueva.
    • REGION: Es la región en la que se encuentra la subred.
    • PRIMARY_RANGE: Es el rango IPv4 principal para la subred nueva, en notación CIDR. Para obtener más información, consulta Rangos de subredes IPv4.
    • POD_RANGE_NAME: Es un nombre para el rango secundario.
    • SECONDARY_RANGE: Es el rango IPv4 secundario en notación CIDR. Para conocer los rangos válidos, consulta Rangos de subredes IPv4.

    Para obtener más información, consulta Trabaja con subredes.

  2. Actualiza tu clúster para usar la subred adicional con gcloud CLI:

       gcloud container clusters update CLUSTER_NAME \
         --additional-ip-ranges=subnetwork=SUBNET_NAME,pod-ipv4-range=POD_RANGE_NAME
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre del clúster existente.
    • SUBNET_NAME: Es el nombre de la subred nueva que creaste.
    • POD_RANGE_NAME: Es el nombre del rango de direcciones IPv4 secundario de la subred que deseas usar para el rango de direcciones IPv4 de Pod.

Agrega una subred nueva con varios rangos de direcciones IPv4 de Pods

  1. Crea una subred nueva en la misma región y red de VPC que el clúster. Establece el rango de direcciones IPv4 principal de la subred en un rango de direcciones IPv4 adicional para los nodos.

  2. Para cada rango de direcciones IPv4 de Pod adicional que necesites, agrega un nuevo rango de direcciones IPv4 secundario de la subred a la subred que creaste en el paso anterior.

  3. Actualiza tu clúster para usar la subred adicional con gcloud CLI. En el siguiente ejemplo, se agrega una subred que tiene dos rangos de direcciones IPv4 secundarios 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
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre del clúster existente.
    • SUBNET_NAME: Es el nombre de la subred nueva que creaste.
    • POD_RANGE_NAME_1 y POD_RANGE_NAME_2: Los nombres de los rangos de direcciones IPv4 secundarios de la subred que deseas usar para los rangos de direcciones IPv4 de Pod.

Verifica 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

Reemplaza CLUSTER_NAME por el nombre del clúster.

El resultado es similar a este:

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 con un grupo de nodos, ejecuta el siguiente comando:

gcloud container node-pools describe POOL_NAME \
    --cluster=CLUSTER_NAME \

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos
  • CLUSTER_NAME: el nombre del clúster

El resultado es similar a este:

name: pool-1
networkConfig:
  podRange: pod-range-1
  subnetwork: projects/user-gke-dev-2/regions/us-central1/subnetworks/shared-msc-subnets

Cómo quitar una subred no predeterminada

Quitar una subred no predeterminada de un clúster indica al clúster que ya no use los rangos de la subred en ninguno de los grupos de nodos del clúster. La eliminación tiene los siguientes efectos:

  • El rango de direcciones IPv4 principal de la subred no predeterminada no se puede usar para los rangos de direcciones IPv4 de los nodos.
  • Los rangos de IPv4 secundarios de la subred en la subred no predeterminada no se pueden usar para los rangos de IPv4 de Pod.

Antes de quitar una subred no predeterminada, debes borrar todos los grupos de nodos que la usen.

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

Reemplaza lo siguiente:

  • CLUSTER_NAME: El nombre de tu clúster.
  • SUBNET_NAME: Es el nombre de la subred que deseas quitar del clúster.

Después de quitar una subred no predeterminada del clúster, puedes borrar la subred no predeterminada.

Quita un rango de IPv4 secundario de una subred no predeterminada

Cuando quitas un rango de direcciones IPv4 secundario de una subred no predeterminada de un clúster, GKE le indica al clúster que no use ese rango para los rangos de IPv4 de Pod en ningún grupo de nodos. Si el rango de direcciones IPv4 secundario de la subred no predeterminada que quitas es el único rango de la subred no predeterminada que usa este clúster, GKE también le indica al clúster que deje de usar la dirección IPv4 principal de esta subred para las direcciones IPv4 del nodo.

Antes de quitar un rango de direcciones IPv4 secundario de una subred no predeterminada, debes borrar todos los grupos de nodos que usen el rango para las direcciones IPv4 de Pod.

Para quitar un rango 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

Reemplaza lo siguiente:

  • CLUSTER_NAME: el nombre del clúster
  • SUBNET_NAME: Es el nombre de la subred no predeterminada.
  • POD_RANGE_NAME: Es el nombre del rango de direcciones IPv4 secundario de la subred no predeterminada que deseas quitar del clúster.

Después de quitar un rango IPv4 secundario de subred no predeterminado del clúster, puedes borrar el rango IPv4 secundario de subred no predeterminado.

¿Qué sigue?