Asignar direcciones IP a cargas de trabajo

Crea subredes adicionales en la nube privada virtual (VPC) interna de tu organización o en la VPC predeterminada para satisfacer tus requisitos de red interna. Por ejemplo, añade subredes de VPC para asegurarte de que tus cargas de trabajo internas, como las máquinas virtuales y los contenedores, tengan suficientes direcciones IP.

En esta página se describen varias tareas que no tienen por qué completarse en orden:

Para obtener una descripción general de las subredes y sus conceptos antes de completar las tareas de esta página, consulta Subredes y direcciones IP.

Este documento está dirigido a los administradores de plataformas y a los operadores de aplicaciones que se encargan de gestionar el tráfico de red de su organización. Para obtener más información, consulta Audiencias de la documentación aislada de GDC.

Antes de empezar

Para obtener el permiso que necesitas para crear subredes, pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol de gestión de identidades y accesos de administrador de subredes de la organización (subnet-org-admin). Este rol no está vinculado a un espacio de nombres.

Crear una subred de rama zonal para cargas de trabajo

Para subdividir aún más las direcciones IP de tu VPC predeterminada zonal, puedes crear una subred interna zonal a partir de la subred raíz zonal de la zona. Debes crear este tipo de subred en el espacio de nombres platform.

Si la subred raíz zonal principal no tiene suficientes direcciones IP disponibles, asigna otra subred zonal del intervalo de direcciones IP global antes de continuar.

  • En una ventana de terminal, crea la nueva subred zonal en el servidor de la API de gestión:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      networkSpec:
        enableGateway: true
        enableVLANID: false
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: platform
      type: Branch
    EOF
    

    Haz los cambios siguientes:

    • MANAGEMENT_API_SERVER_KUBECONFIG: la ruta al archivo kubeconfig de tu servidor de la API de gestión. Para obtener más información, consulta el artículo sobre los recursos del servidor de la API de gestión de zonas.

    • SUBNET_NAME: el nombre de la nueva subred.

    • CIDR_PREFIX_LENGTH: la longitud del prefijo de la nueva subred, como 27. Este campo asigna dinámicamente el siguiente intervalo de direcciones IP disponible de ese tamaño de la subred principal. Usa el campo prefixLength cuando solo te interese el tamaño de la subred, no su intervalo de direcciones IP específico.

      Para asignar un intervalo de direcciones IP específico, sigue estos pasos:

      1. Elimina la línea prefixLength: CIDR_PREFIX_LENGTH.
      2. Añade una línea cidr: "YOUR_CIDR_BLOCK" en su lugar, como cidr: "10.0.10.0/27".

      Usa el campo cidr cuando sigas un plan de IPs estricto y necesites asignar un intervalo de direcciones IP preciso y predecible. Este intervalo debe ser una subred válida y disponible dentro de la subred principal.

    • PARENT_SUBNET_NAME: el nombre de la subred principal, como default-vpc-zone0-cidr. La subred principal suele ser una subred raíz zonal de la VPC predeterminada.

    Para obtener más información, consulta la documentación de referencia sobre la API del recurso Subnet.

    Puedes seguir subdividiendo tus subredes zonales o crear una subred hoja para asignar una dirección IP individual directamente a una carga de trabajo interna.

Crear una subred hoja para una carga de trabajo individual

Para asignar una sola dirección IP a tu carga de trabajo, debes crear una subred hoja. Esta subred de hoja debe tener el valor de campo type: Leaf y debe residir en el mismo espacio de nombres de proyecto que el recurso de carga de trabajo, como una máquina virtual o un contenedor.

La subred hoja debe configurarse con un valor de prefixLength de 32, ya que está diseñada para asignar una sola dirección IP. El valor parentReference hace referencia a una subred asignada anteriormente, como la subred zonal principal que creaste en Crear una subred de rama zonal para cargas de trabajo.

  • En una ventana de terminal, crea la subred hoja en el servidor de la API de gestión:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
      name: SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_SUBNET
        namespace: PARENT_NAMESPACE
      type: Leaf
    EOF
    

    Haz los cambios siguientes:

    • MANAGEMENT_API_SERVER_KUBECONFIG: la ruta al archivo kubeconfig de tu servidor de la API de gestión. Para obtener más información, consulta el artículo sobre los recursos del servidor de la API de gestión de zonas.
    • SUBNET_NAME: el nombre de la subred hoja.
    • PROJECT_NAMESPACE: el espacio de nombres del proyecto correspondiente a tu proyecto en el que se encuentran tus cargas de trabajo.
    • PARENT_SUBNET: el nombre de la subred principal de la que esta subred hoja obtendrá su dirección IP.
    • PARENT_NAMESPACE: el espacio de nombres PROJECT_NAMESPACE o platform.

Tu dirección IP individual ya está disponible para que la usen tus cargas de trabajo internas, como máquinas virtuales y contenedores. Para obtener más información sobre cómo configurar la dirección IP de tus cargas de trabajo, consulta Crear una VM con una dirección IP estática o dinámica o Configurar un balanceador de carga interno para cargas de trabajo de contenedores.

Asignar una subred zonal a partir de un intervalo de direcciones IP globales

Si tu zona no proporciona suficientes direcciones IP para tus cargas de trabajo a partir del intervalo de direcciones IP de la subred raíz zonal, puedes asignar direcciones IP adicionales del intervalo raíz de direcciones IP global.

Para asignar una subred zonal del intervalo de direcciones IP global, sigue estos pasos para la red de VPC predeterminada en el espacio de nombres platform:

  1. En una ventana de terminal, describe todas las subredes raíz de la VPC predeterminada y comprueba sus bloques CIDR disponibles:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
    

    Sustituye GLOBAL_API_SERVER_KUBECONFIG por la ruta al archivo kubeconfig del servidor de la API global. Para obtener más información, consulta los recursos del servidor de la API global. Las etiquetas son constantes y deben seguir siendo las mismas.

    El resultado debería ser similar al siguiente:

    Name:         default-vpc-root-cidr
    Namespace:    platform
    Labels:       ipam.gdc.goog/allocation-preference=default
                  ipam.gdc.goog/subnet-group=default-vpc-root-group
                  ipam.gdc.goog/usage=network-root-range
                  ipam.gdc.goog/vpc=default-vpc
    Annotations:  <none>
    API Version:  ipam.global.gdc.goog/v1
    Kind:         Subnet
    Metadata:
      Creation Timestamp:  2025-06-18T23:05:38Z
      Finalizers:
        global-subnet-finalizer
      Generation:        1
      Resource Version:  439434
      UID:               5ed1c51a-b5ee-473e-a185-8e065a87ae8f
    Spec:
      ipv4Request:
        Cidr:                10.252.0.0/14
      Propagation Strategy:  None
      Type:                  Root
    Status:
      Children Refs:
        Name:       default-vpc-zone1-root-cidr
        Namespace:  platform
        Type:       SingleSubnet
      Conditions:
        Last Transition Time:  2025-06-18T23:05:38Z
        Message:               IP allocation finished successfully
        Observed Generation:   1
        Reason:                AllocationSucceeded
        Status:                True
        Type:                  Ready
      ipv4Allocation:
        Available CIDRs:
          10.254.0.0/15
          10.253.0.0/16
        Cidr:  10.252.0.0/14
    Events:    <none>
    

    Ten en cuenta los valores de Status.ipv4Allocation.Available CIDRs. Estos valores son los bloques CIDR disponibles a los que se hace referencia en el siguiente paso. En el resultado anterior, están disponibles los intervalos CIDR 10.254.0.0/15 y 10.253.0.0/16. Es posible que tu salida muestre varias subredes. Anota todos los bloques CIDR disponibles y sus subredes de origen.

  2. Compara el bloque CIDR más grande disponible del paso anterior con el tamaño del bloque CIDR que necesitas para tu zona. Si el bloque CIDR disponible más grande no es lo suficientemente grande como para asignar tu nueva subred, añade una nueva subred global de intervalo raíz de red antes de continuar. Anota la subred principal de la que quieras obtener el bloque CIDR de tu nueva subred.

    Por ejemplo, si necesita un bloque CIDR /13, pero los CIDR disponibles solo incluyen /15 y /16, debe añadir una nueva subred global de intervalo raíz de red. Si necesitas una subred /15, puedes asignar una nueva subred zonal del bloque CIDR /15.

  3. Crea la nueva subred en el servidor de la API global:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: zone-network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      zone: ZONE_NAME
      propagationStrategy: SingleZone
      type: Branch
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: ORG_NAME
    EOF
    

    Haz los cambios siguientes:

    • GLOBAL_API_SERVER_KUBECONFIG: la ruta al archivo kubeconfig del servidor de la API global. Para obtener más información, consulta los recursos del servidor de la API global.
    • SUBNET_NAME: el nombre de la nueva subred.
    • CIDR_PREFIX_LENGTH: longitud del prefijo CIDR de la nueva subred que se asigna dinámicamente, como 20. Para definir el CIDR de forma estática, sustituya el campo prefixLength por el campo cidr y, a continuación, defina el bloque CIDR, como 10.0.10.0/27.
    • ZONE_NAME: la zona en la que se va a asignar la subred, como zone1.
    • PARENT_SUBNET_NAME: el nombre de la subred principal, como default-vpc-root-cidr, o la nueva subred global del intervalo raíz de la red que has creado.
    • ORG_NAME: el nombre de la organización.

    Para obtener más información, consulta la documentación de referencia sobre la API del recurso Subnet.

  4. Comprueba que la subred esté lista y disponible en el servidor de la API global comprobando que su estado Ready sea true:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    El resultado debería ser similar al siguiente:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    
  5. Verifica que la subred zonal se haya creado en el servidor de la API de gestión zonal y que su tipo de estado Ready sea true:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    Sustituye MANAGEMENT_API_SERVER_KUBECONFIG por la ruta al archivo kubeconfig de tu servidor de API de gestión. Para obtener más información, consulta el artículo sobre los recursos del servidor de la API de gestión de zonas.

    El resultado debería ser similar al siguiente:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:29:34Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    

    Desde esta nueva subred zonal, puedes crear más subredes secundarias zonales o asignar una dirección IP individual directamente a una carga de trabajo interna.

Dividir la subred global raíz sin asignación de zona

Para dividir aún más una subred global sin asignarla a una zona, crea una subred global y omite la estrategia de propagación en el recurso personalizado Subnet. Este enfoque es útil si quieres seguir organizando tu intervalo de direcciones IP accesibles a nivel global desde la subred raíz global sin asignar las direcciones IP a una zona.

Para dividir tu subred raíz global en el ámbito global, sigue estos pasos en el espacio de nombres platform:

  1. En una ventana de terminal, describe todas las subredes raíz de la VPC predeterminada y comprueba sus bloques CIDR disponibles:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
    

    Sustituye GLOBAL_API_SERVER_KUBECONFIG por la ruta al archivo kubeconfig del servidor de la API global. Para obtener más información, consulta los recursos del servidor de la API global. Las etiquetas son constantes y deben seguir siendo las mismas.

    El resultado debería ser similar al siguiente:

    Name:         default-vpc-root-cidr
    Namespace:    platform
    Labels:       ipam.gdc.goog/allocation-preference=default
                  ipam.gdc.goog/subnet-group=default-vpc-root-group
                  ipam.gdc.goog/usage=network-root-range
                  ipam.gdc.goog/vpc=default-vpc
    Annotations:  <none>
    API Version:  ipam.global.gdc.goog/v1
    Kind:         Subnet
    Metadata:
      Creation Timestamp:  2025-06-18T23:05:38Z
      Finalizers:
        global-subnet-finalizer
      Generation:        1
      Resource Version:  439434
      UID:               5ed1c51a-b5ee-473e-a185-8e065a87ae8f
    Spec:
      ipv4Request:
        Cidr:                10.252.0.0/14
      Propagation Strategy:  None
      Type:                  Root
    Status:
      Children Refs:
        Name:       default-vpc-zone1-root-cidr
        Namespace:  platform
        Type:       SingleSubnet
      Conditions:
        Last Transition Time:  2025-06-18T23:05:38Z
        Message:               IP allocation finished successfully
        Observed Generation:   1
        Reason:                AllocationSucceeded
        Status:                True
        Type:                  Ready
      ipv4Allocation:
        Available CIDRs:
          10.254.0.0/15
          10.253.0.0/16
        Cidr:  10.252.0.0/14
    Events:    <none>
    

    Ten en cuenta los valores de Status.ipv4Allocation.Available CIDRs. Estos valores son los bloques CIDR disponibles a los que se hace referencia en el siguiente paso. En el resultado anterior, están disponibles los intervalos CIDR 10.254.0.0/15 y 10.253.0.0/16. Puede haber varias subredes en la salida en función del número de subredes raíz que tengas, así que anota todos los bloques CIDR disponibles y la subred de la que proceden.

  2. Compara el bloque CIDR más grande disponible del paso anterior con el tamaño del bloque CIDR que necesitas para tu nueva subred global. Si el bloque CIDR disponible más grande no es lo suficientemente grande para asignar tu nueva subred, añade una nueva subred global de intervalo raíz de red antes de continuar. Anota la subred principal de la que quieras obtener el bloque CIDR de tu nueva subred.

    Por ejemplo, si necesitas un bloque CIDR /13, pero los CIDR disponibles solo incluyen /15 y /16, debes crear una subred global de intervalo raíz de red. Si necesitas una /15 subred, puedes asignar la nueva subred global del bloque CIDR /15.

  3. Crea la nueva subred en el servidor de la API global:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: zone-network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        prefixLength: CIDR_PREFIX_LENGTH
      propagationStrategy: None
      type: Branch
      parentReference:
        name: PARENT_SUBNET_NAME
        namespace: ORG_NAME
    EOF
    

    Haz los cambios siguientes:

    • GLOBAL_API_SERVER_KUBECONFIG: la ruta al archivo kubeconfig del servidor de la API global. Para obtener más información, consulta los recursos del servidor de la API global.
    • SUBNET_NAME: el nombre de la nueva subred.
    • CIDR_PREFIX_LENGTH: longitud del prefijo CIDR de la nueva subred que se asigna dinámicamente, como 20. Para definir el CIDR de forma estática, sustituya el campo prefixLength por el campo cidr y, a continuación, defina el bloque CIDR, como 10.0.10.0/27.
    • PARENT_SUBNET_NAME: el nombre de la subred principal, como default-vpc-root-cidr, o la nueva subred global del intervalo raíz de la red que has creado.
    • ORG_NAME: el nombre de la organización.

    Para obtener más información, consulta la documentación de referencia sobre la API del recurso global Subnet.

  4. Comprueba que la subred esté lista y disponible en el servidor de la API global comprobando que su estado Ready sea true:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    El resultado debería ser similar al siguiente:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    

La nueva subred global de tu organización en la VPC predeterminada está disponible. Puedes crear una subred para una zona concreta a partir de esta nueva subred principal global.

Añadir una nueva subred global de intervalo raíz de red

Las subredes globales con la etiqueta ipam.gdc.goog/usage: network-root-range alojan el CIDR de todas las zonas de la red. Si se agota el CIDR, debes crear una subred de intervalo raíz de red en el servidor de la API global. Puedes crear varias subredes globales raíz si es necesario.

Para crear una subred de intervalo raíz de red, sigue estos pasos:

  • En una ventana de terminal, crea la subred global del intervalo raíz de la red predeterminada de VPC en el espacio de nombres platform:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: default-vpc
        ipam.gdc.goog/usage: network-root-range
      name: SUBNET_NAME
      namespace: platform
    spec:
      ipv4Request:
        cidr: NEW_CIDR
      type: Root
    EOF
    

    Haz los cambios siguientes:

    • GLOBAL_API_SERVER_KUBECONFIG: la ruta al archivo kubeconfig del servidor de la API global. Para obtener más información, consulta los recursos del servidor de la API global.
    • SUBNET_NAME: el nombre de la nueva subred.
    • NEW_CIDR: el nuevo CIDR de la subred. Este CIDR no puede solaparse con ningún CIDR de las subredes que tengan la etiqueta ipam.gdc.goog/usage: network-root-range en el mismo servidor de API global.

Esta nueva subred de intervalo raíz global se puede subdividir en el servidor de API global o asignar a una zona específica.

Siguientes pasos