Agrega rangos de direcciones IP del Pod


En esta página, se muestra cómo agregar rangos de direcciones IP de Pods secundarios nuevos o existentes a clústeres de GKE con CIDR de varios Pods discontinuos.

Por qué agregar más rangos IPv4 de Pods

Como administrador de la plataforma, puedes agregar más rangos IPv4 de Pods mediante la creación de rangos secundarios adicionales. Esto puede ser útil en las siguientes situaciones:

  • Cuando el clúster se queda sin direcciones IP de Pods.
  • Cuando quieras asignar direcciones IP de forma eficiente para anticipar el futuro.
  • Cuándo puedes usar espacios de direcciones IP fragmentados para tus clústeres.
  • Cuando puedes reasignar direcciones IP en respuesta a las necesidades empresariales cambiantes.

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.

Agrega más rangos IPv4 de Pods con GKE Autopilot

Para los clústeres de Autopilot de GKE en la versión 1.26 o posterior, puedes agregar más rangos IPv4 de Pods si creas rangos secundarios adicionales y los asignas al clúster.

Crea un rango secundario adicional para una subred

Consola

  1. Ve a la página Redes de VPC en la consola de Google Cloud.

    Ir a las redes de VPC

  2. En la lista Redes de VPC, selecciona la red que deseas expandir.

  3. En la lista Subredes, selecciona la subred que desees.

  4. Haga clic en Editar.

  5. Haz clic en Agregar rango de IP.

  6. En Nombre de rango de subred, ingresa el nombre adicional del rango de Pods. Por ejemplo, pod-range-2

  7. En Rango de IP secundario, ingresa el rango de IP. Por ejemplo, 10.2.204.0/22

  8. Haz clic en Guardar.

gcloud

gcloud compute networks subnets update SUBNET_NAME \
    --add-secondary-ranges ADDITIONAL_RANGE=RANGE \
    --location=COMPUTE_LOCATION

Reemplaza lo siguiente:

  • SUBNET_NAME: El nombre de la subred a la que deseas agregar un rango (debe ser la subred asignada al clúster)
  • ADDITIONAL_RANGE: El nombre del rango de Pods que se agregará al clúster. Por ejemplo, pod-range-2 Para especificar varios rangos, sepáralos con una coma. Por ejemplo: pod-range-1, pod-range-2.
  • RANGE: El rango de direcciones IP que se agregará al clúster.
  • COMPUTE_LOCATION: La ubicación de Compute Engine de la subred.

Asigna rangos secundarios adicionales al clúster

Crea rangos secundarios adicionales y asígnalos al clúster. Puedes usar la consola de Google Cloud o Google Cloud CLI:

Consola

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

    Ir a Google Kubernetes Engine

  2. Junto al clúster que deseas editar, haz clic en  Acciones y, luego, en  Editar.

  3. En la sección Herramientas de redes, junto a Rangos IPv4 del Pod del clúster (adicionales), haz clic en Editar.

  4. En el cuadro de diálogo Editar rangos IPv4 de Pod adicionales del clúster, selecciona los Rangos de CIDR secundarios de pods que deseas agregar al clúster. Usa el mismo nombre de rango de Pods que creaste en la subred como rangos secundarios adicionales para el clúster.

  5. Haz clic en Guardar cambios.

gcloud

  1. Actualiza el clúster para usar un rango de direcciones IP adicional:

    gcloud container clusters update CLUSTER_NAME \
        --additional-pod-ipv4-ranges=ADDITIONAL_RANGE \
        --location=COMPUTE_LOCATION
    

    Reemplaza lo siguiente:

    • CLUSTER_NAME: Es el nombre del clúster. Tu clúster debe ejecutar la versión 1.26.0 o posterior.
    • ADDITIONAL_RANGE: El nombre del rango de Pod para agregar al clúster. Usa el mismo nombre de rango de Pods que creaste en la subred como rangos secundarios adicionales para el clúster.
    • COMPUTE_LOCATION: La ubicación de Compute Engine de la subred.
  2. Verifica que la dirección IP nueva esté asignada al clúster:

    gcloud container clusters describe CLUSTER_NAME
    

    El resultado es similar a este:

    ipAllocationPolicy:
    additionalPodRangesConfig:
      podRangeNames:
      - pod-range-1
      - pod-range-2
    clusterIpv4Cidr: 10.10.0.0/23
    clusterIpv4CidrBlock: 10.10.0.0/23
    clusterSecondaryRangeName: cluster-pods
    

Agrega más rangos IPv4 de Pods con GKE Standard

Para los clústeres de GKE Standard, puedes agregar más rangos IPv4 de Pods mediante cualquiera de los siguientes métodos:

  • Crea y asigna rangos secundarios adicionales al clúster: recomendado para los usuarios que no necesitan controlar los rangos de direcciones IP del Pod a nivel del grupo de nodos. Este método está disponible en GKE versión 1.26.0 o posterior. Para obtener más información, consulta Agrega más rangos IPv4 de Pods con GKE Autopilot.
  • Crea un grupo de nodos con un rango de direcciones IP del Pod secundario nuevo: se recomienda para los usuarios que necesitan controlar por completo los rangos de direcciones IP del Pod de tus grupos de nodos. Este método está disponible en GKE versión 1.20.4-gke.500 o posterior.
  • Crea un grupo de nodos mediante una dirección IP de Pod secundaria existente: se recomienda para los usuarios que necesitan controlar por completo los rangos de direcciones IP de los Pods existentes de los grupos de nodos. Este método está disponible en GKE versión 1.20.4-gke.500 o posterior.

Crea un grupo de nodos con un rango de IP del Pod secundario nuevo

De forma predeterminada, GKE asocia un rango de Pod al grupo de nodos. Puede ser el rango de direcciones IP predeterminado del Pod del clúster o uno de los rangos de Pods adicionales (si existen) asociados con el clúster. Con los rangos secundarios adicionales, puedes especificar un rango de direcciones IPv4 del Pod durante la creación del grupo de nodos, y el grupo de nodos usa ese rango en lugar del rango de direcciones IP del Pod secundario predeterminado del clúster.

En esta sección, crearás un grupo de nodos con un rango de direcciones IP del Pod secundario.

Puedes usar Google Cloud CLI o la API de GKE.

gcloud

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --create-pod-ipv4-range name=RANGE_NAME,range=RANGE

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos nuevo
  • CLUSTER_NAME: el nombre del clúster
  • RANGE_NAME: un nombre opcional del nuevo rango de direcciones IP del Pod secundario
  • RANGE: un rango de direcciones IP de Pod opcional proporcionado como una máscara de red (/20) o un rango CIDR (10.12.4.0/20). Si proporcionas una máscara de red, GKE asigna un rango de los rangos disponibles en la red del clúster. Si no proporcionas un valor para range, GKE asigna de forma automática una máscara de red de /14, el tamaño predeterminado para el rango de IP secundario para Pods de la subred.

API

"nodePool": {
  "name": "POOL_NAME",
  ...
  "networkConfig": {
    "createPodRange": true,
    "podRange": "RANGE_NAME",
    "podIpv4CidrBlock": "RANGE"
  }
}

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos nuevo
  • RANGE_NAME: un nombre opcional del nuevo rango de direcciones IP del Pod secundario
  • RANGE: un rango de direcciones IP del Pod opcional proporcionado como una máscara de red (/20) o un rango CIDR (10.12.0.0/20). Si se especifica una máscara de red, el rango de IP se asigna automáticamente desde el espacio libre en la red del clúster. Si no se proporciona ningún valor, GKE asigna de forma automática una máscara de red /14, el tamaño predeterminado para el rango de IP secundario de Pods de la subred.

Crea un grupo de nodos con un rango de IP del Pod secundario existente

En esta sección, crearás un grupo de nodos con un rango de direcciones IP del Pod secundario existente.

Puedes usar la CLI de gcloud o la API de GKE.

gcloud

gcloud container node-pools create POOL_NAME \
    --cluster CLUSTER_NAME \
    --pod-ipv4-range RANGE_NAME

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos nuevo
  • CLUSTER_NAME: el nombre del clúster
  • RANGE_NAME: el nombre de un rango de direcciones IP del Pod secundario existente en la subred del clúster.

API

"nodePool": {
  "name": "POOL_NAME",
  ...
  "networkConfig": {
    "podRange": "RANGE_NAME"
  }
}

Reemplaza lo siguiente:

  • POOL_NAME: el nombre del grupo de nodos nuevo
  • RANGE_NAME: el nombre de un rango de direcciones IP del Pod secundario existente en la subred del clúster.

Verifica el bloque CIDR del Pod para un grupo de nodos

A fin de determinar qué bloque CIDR del Pod se usa para los Pods en un grupo de nodos determinado, usa el siguiente comando:

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

El resultado es similar a este:

...
networkConfig:
  podIpv4CidrBlock: 192.168.0.0/18
  podRange: podrange
...

Si el grupo de nodos usa CIDR de varios Pods discontinuos, podRange y podIpv4CidrBlock muestran los valores configurados para este grupo de nodos.

Si el grupo de nodos no usa CIDR de varios pods contiguos, podRange y podIpv4CidrBlock muestran los valores predeterminados del clúster, clusterSecondaryRangeName y clusterIpv4CidrBlock, de IPAllocationPolicy.

Agrega más rangos IPv4 de Pods para casos de uso específicos

  • Si usas ip-masq-agent configurado con el parámetro nonMasqueradeCIDRs, debes actualizar nonMasqueradeCIDRs para incluir todos los rangos secundarios adicionales.
  • Si usas NetworkPolicy configurado con un ipBlock para especificar el tráfico, debes actualizar el valor de CIDR a fin de incluir todos los rangos de CIDR del Pod.
  • Para una VPC compartida, debes establecer con anterioridad otra cuenta de servicio.
  • Para agregar un rango de direcciones IP del Pod secundario al clúster o crear un grupo de nodos con un rango de direcciones IP del Pod secundario nuevo, debes tener el rol de Administrador de red. Un rol de usuario solo puede usar estos recursos si los crea el administrador de red.
  • Si tu proyecto tiene más de un clúster, asegúrate de crear y agregar un rango de direcciones IP de Pod secundario en cada clúster.

Cómo funciona CIDR de varios Pods discontinuos

Cuando creas un grupo de nodos nuevo, de forma predeterminada, el grupo de nodos usa el rango de direcciones IP del Pod predeterminado del clúster, también conocido como CIDR del clúster. Con esta característica, puedes especificar un rango de direcciones IP del Pod durante la creación del grupo de nodos, y el grupo de nodos usa ese rango en lugar del rango de direcciones IP predeterminado del Pod del clúster.

En el siguiente diagrama, se muestra un clúster administrado por el usuario con un bloque de CIDR /24 como un rango de direcciones IP de Pods secundario (256 direcciones IP) y dos nodos que usan un bloque CIDR /25 para direcciones IP del Pod (128 direcciones IP cada una). El rango de direcciones IP del Pod secundario está agotado y no puedes agregar otro nodo al clúster. En lugar de borrar y volver a crear el clúster, puedes usar CIDR con varios Pods discontinuos para expandir las direcciones IP del Pod con bloques /20 CIDR. El clúster se expande a fin de incluir un tercer nodo que usa el bloque CIDR /25 para direcciones IP de Pods que provienen del bloque /20.

Agrega un grupo de nodos a un clúster con un rango de direcciones IP del Pod secundario agotado mediante CIDR de varios Pods discontinuos
Diagrama: Usa CIDR de varios Pods discontinuos

Regla de firewall modificada

Cuando GKE crea un clúster, crea una regla de firewall para habilitar la comunicación de Pod a Pod, gke-[cluster-name]-[cluster-hash]-all.

Cuando creas o borras un grupo de nodos con CIDR habilitado para varios Pods, GKE actualiza el valor de origen de esta regla de firewall a todos los CIDR que usan el clúster para las IP de Pods.

Soluciona problemas

Puedes habilitar los registros de flujo de VPC para determinar si los paquetes se envían de forma correcta a los nodos.

¿Qué sigue?