Configurar subredes para la red de cargas de trabajo

Se asignan subredes raíz globales a cada zona aislada de Google Distributed Cloud (GDC) con la subred de la API pública de gestión de direcciones IP (IPAM). Las subredes raíz globales alojan el grupo de intervalos de direcciones IP raíz (CIDR) que se divide en cada zona para inicializar todos los clústeres de la organización del arrendatario, incluidos el clúster de infraestructura de la organización y las VMs de carga de trabajo. También se pone a disposición de las subredes raíz una pequeña parte del intervalo de direcciones IP como grupo de direcciones IP de difusión general.

Una vez que se haya creado una organización, podrás completar las siguientes tareas operativas para las subredes de tu universo de GDC:

Crear subredes globales de intervalo raíz para la nueva zona

Cada zona debe tener subredes globales de intervalo raíz. Durante la fase de bootstrap inicial de la organización del universo de GDC, cada zona tiene las subredes globales generadas automáticamente. Sin embargo, si se añade una zona después de la instalación inicial, debes crear manualmente las subredes globales del intervalo raíz de la nueva zona.

Define el intervalo CIDR de las subredes del intervalo raíz de la red de la nueva zona

Al igual que en las directrices de instalación de la organización para definir un intervalo CIDR, los intervalos CIDR no pueden superponerse entre sí ni con las subredes globales raíz zone-infra-cidr y las subredes con la etiqueta ipam.gdc.goog/usage: network-root-range en su especificación de recurso personalizado.

El zone-infra-cidr se encuentra en cada zona y se puede obtener del cuestionario de información del cliente (CIQ) si el cliente lo ha definido.

  1. Para recuperar el zone-infra-cidr, ejecuta el siguiente comando:

    kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system zone-infra-cidr
    

    Toma nota del intervalo CIDR.

  2. Debes tener un espacio de nombres con un nombre que coincida con el que asignarás a tu organización. Confirma que este espacio de nombres existe:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get namespace ORG_NAME
    
  3. Obtén las subredes globales raíz:

    • En el clúster de administrador raíz global, ejecuta lo siguiente:

      kubectl –kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet \
          -n ORG_NAME  -l ipam.gdc.goog/usage=network-root-range
      
    • En el servidor de la API de administrador de la organización global, ejecuta el siguiente comando:

      kubectl –kubeconfig GLOBAL_ORG_API_SERVER_KUBECONFIG get subnet \
          -n platform -l ipam.gdc.goog/usage=network-root-range
      

      Anota todos los intervalos CIDR de la salida.

  4. Confirma que los nuevos intervalos CIDR planificados no se solapan con ninguno de los intervalos CIDR anteriores.

Una vez que haya confirmado que el nuevo intervalo CIDR es válido para la nueva zona, confirme que cumple las siguientes reglas:

Campo de intervalo CIDR. Tamaño mínimo VPC/VRF Servidor de API global
zoneInfraVPCCIDR 17 VPC de infraestructura Raíz global
zoneDefaultVPCCIDR 18 VPC predeterminada Organización mundial
zoneOrgAdminExternalCIDR 23 Segmento de red de administrador Raíz global
zoneOrgDataExternalCIDR 23 Segmento de red de datos Raíz global

Crear subredes en el servidor de la API de administrador raíz global

Para crear las subredes en el servidor de la API de administrador raíz global, sigue estos pasos:

  1. Lista las zonas de tu universo y busca el nombre de la nueva zona:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get zone -A
    
  2. Crea la subred infra-vpc de la zona de la organización:

    kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/vpc: infra-vpc
        ipam.gdc.goog/usage: zone-network-root-range
      annotations:
        ipam.gdc.goog/pivot-destination: global-org
      name: infra-vpc-NEW_ZONE_NAME-root-cidr
      namespace: ORG_NAME
    spec:
      ipv4Request:
        cidr: zoneInfraVPCCIDR
      zone: NEW_ZONE_NAME
      propagationStrategy: SingleZone
      type: Root
    EOF
    
  3. Crea la subred del segmento de red de datos de intervalo raíz de red de la zona de la organización:

    kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/network-segment: data
        ipam.gdc.goog/usage: zone-network-root-range
      annotations:
        ipam.gdc.goog/pivot-destination: global-org
      name: data-external-NEW_ZONE_NAME-root-cidr
      namespace: ORG_NAME
    spec:
      ipv4Request:
        cidr: zoneOrgDataExternalCIDR
      zone: NEW_ZONE_NAME
      propagationStrategy: SingleZone
      type: Root
    EOF
    
  4. Crea la subred del segmento de red de administrador del intervalo raíz de la red de la zona de la nueva zona de la organización:

    kubectl apply -f --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/network-segment: admin
        ipam.gdc.goog/usage: zone-network-root-range
      annotations:
        ipam.gdc.goog/pivot-destination: global-org
      name: admin-external-NEW_ZONE_NAME-root-cidr
      namespace: ORG_NAME
    spec:
      ipv4Request:
        cidr: zoneOrgAdminExternalCIDR
      zone: NEW_ZONE_NAME
      propagationStrategy: SingleZone
      type: Root
    EOF
    

Crear subredes en el servidor de la API de administrador de la organización global

Debes crear la subred de VPC predeterminada en el servidor de la API de administrador de la organización global de la organización en el espacio de nombres platform después de que se esté ejecutando el servidor de la API.

Crea y aplica el siguiente recurso personalizado Subnet:

kubectl apply -f --kubeconfig=GLOBAL_ORG_API_SERVER_KUBECONFIG - <<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: default-vpc-NEW_ZONE_NAME-root-cidr
  namespace: platform
spec:
  type: Root
  ipv4Request:
    cidr: zoneDefaultVPCCIDR
  zone: NEW_ZONE_NAME
  propagationStrategy: SingleZone
EOF

Subredes de escalado

El recurso público Subnet no admite el aumento de resolución automático. Para añadir más intervalos CIDR a una VPC o un segmento de red gestionados por el cliente, debes crear subredes y agruparlas con determinadas etiquetas. Debido al acceso necesario al clúster de administrador raíz, un cliente no puede aumentar la escala de sus subredes de forma independiente.

Reglas de agrupación de subredes

Las subredes se agrupan en diferentes categorías por etiquetas:

Categoría Etiqueta
VPC predeterminada ipam.gdc.goog/vpc: default-vpc
VPC de infraestructura ipam.gdc.goog/vpc: infra-vpc
Segmento de red de administrador ipam.gdc.goog/network-segment: admin
Segmento de red de datos ipam.gdc.goog/network-segment: data

Durante el arranque inicial, se especificaron cuatro intervalos CIDR en el cuestionario de incorporación de la organización (OIQ). Esas cuatro subredes globales se crearon en el servidor de la API global durante la creación de la organización del cliente. Esas subredes globales son el intervalo CIDR de nivel raíz de cada categoría en todas las zonas de una organización. Todas las subredes globales de nivel raíz tienen la etiqueta ipam.gdc.goog/usage: network-root-range.

En cada zona, se crea una subred global secundaria en el servidor de la API global. Para ello, se extrae de las subredes de nivel raíz. Cada subred global secundaria aloja el intervalo CIDR de una categoría de la zona específica y tiene la etiqueta ipam.gdc.goog/usage: zone-network-root-range. La subred global secundaria de una zona se propaga automáticamente a la zona específica.

Casos prácticos habituales de aumento de resolución

Para asignar de forma más eficiente subredes adicionales a fin de ampliar las subredes que ya tienes, consulta los casos de uso recomendados para cada categoría de subred. Determina la categoría que quieres mejorar antes de empezar el proceso.

VPC predeterminada

Las subredes de default-vpc se usan principalmente para asignar los CIDR de pods y servicios al clúster de servicio compartido, al clúster de usuario y a default-vpc-default-node-subnet para la dirección IP del nodo del clúster y la dirección IP de la carga de trabajo de la organización.

La imposibilidad de crear un clúster de usuarios es un caso habitual en el que puede ser necesario aumentar la escala de la subred.

Es posible que no se pueda crear un clúster de usuarios porque no se encuentre la subred principal del pod o el CIDR de servicio del clúster de usuarios. Un mensaje de ejemplo de este error es similar al siguiente:

could not find parent for subnet platform/user-vm-1-service-cidr

Este problema puede deberse a varios motivos relacionados directamente con la necesidad de ampliar una subred. Sigue estos pasos para confirmarlo:

  1. Comprueba los campos podCIDRSize y serviceCIDRSize de la sección .spec.clusterNetwork del recurso personalizado Cluster:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get cluster \
        -n platform USER_CLUSTER_NAME -oyaml
    

    El resultado es similar al siguiente:

    Example:
    spec:
      clusterNetwork:
        podCIDRSize: 20
        serviceCIDRSize: 20
    
  2. Busca las subredes principales de la subred:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n platform  -l \
        ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=zone-network-root-range
    

    El resultado es similar al siguiente:

    Example:
    NAME                     PARENT   READY   IPV4 CIDR        IPV6 CIDR
    default-vpc-zone0-cidr            True    198.51.100.0/18 
    
  3. Busca todas las subredes asignadas por las subredes principales:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n platform  -l \
        ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage!=zone-network-root-range
    

    El resultado es similar al siguiente:

    Example:
    default-vpc-default-node-subnet       {"name":"default-vpc-zone0-cidr","namespace":"platform"}   True    198.51.100.0/23
    g-org-1-shared-service-pod-cidr       {"name":"default-vpc-zone0-cidr","namespace":"platform"}   True    198.51.16.0/20
    g-org-1-shared-service-service-cidr   {"name":"default-vpc-zone0-cidr","namespace":"platform"}   True    198.51.2.0/23
    user-vm-1-pod-cidr                    {"name":"default-vpc-zone0-cidr","namespace":"platform"}   True    198.51.8.0/21
    user-vm-1-service-cidr                {"name":"default-vpc-zone0-cidr","namespace":"platform"}   True    198.51.4.0/23
    user-vm-2-pod-cidr                    {"name":"default-vpc-zone0-cidr","namespace":"platform"}   True    198.51.32.0/21
    user-vm-2-service-cidr                {"name":"default-vpc-zone0-cidr","namespace":"platform"}   True    198.51.6.0/23
    

En este ejemplo, un CIDR principal /18 ha asignado cuatro CIDRs /23, un CIDR /20 y dos CIDRs /21. El nuevo clúster de usuarios solicita un CIDR /20 para podCIDRSize y un CIDR /20 para serviceCIDRSize, lo que no es suficiente.

En este caso, debes añadir más subredes a una categoría de la VPC predeterminada.

VPC de infraestructura

Las subredes de infra-vpc se usan principalmente para asignar los CIDR de pods y servicios de una organización al clúster de infraestructura y al clúster perimetral de la organización, así como la dirección IP de los nodos del clúster perimetral.

Como pertenece a la configuración interna de la infraestructura de los centros de datos de Google, y cada organización solo tiene un clúster de infraestructura de organización y un clúster perimetral, normalmente no será necesario realizar operaciones de ampliación de infra-vpc.

Segmento de red de administrador

Las subredes del segmento de red de administración se usan principalmente para asignar direcciones IP en el VRF de administración de la organización. Se ha creado una subred de nodo predeterminada o una subred con información de la pasarela en la organización. Esa subred predeterminada asigna la dirección IP de la infraestructura de la organización, la dirección IP del nodo del clúster y la dirección IP del nodo del clúster perimetral.

Como el segmento de red de administrador pertenece a la configuración de infraestructura de GDC interna y cada organización solo puede tener un clúster de infraestructura de organización y un clúster perimetral, normalmente no será necesario aumentar la escala de esta subred.

Segmento de red de datos

Las subredes del segmento de red de datos se usan principalmente para asignar direcciones IP en el VRF de datos de la organización. Se ha creado una subred de nodo predeterminada o una subred con información de la pasarela en la organización. Esa subred predeterminada asigna las direcciones IP de la dirección IP del nodo del clúster de infraestructura de la organización y la dirección IP del nodo del clúster perimetral.

Como el segmento de red de datos pertenece a la configuración de la infraestructura interna de GDC y cada organización solo puede tener un clúster de infraestructura de organización y un clúster perimetral, normalmente no será necesario aumentar la escala de esta subred.

Añadir más subredes a una categoría

Puedes añadir más subredes a una categoría en función del tipo de subred. Se pueden añadir más subredes a los siguientes tipos:

  • VPC de infraestructura
  • Segmento de red de administrador
  • Segmento de red de datos
  • VPC predeterminada

Determina el tipo de subred al que quieres añadir más subredes y, a continuación, completa los siguientes pasos para ese tipo de subred:

  1. En el servidor de la API de administrador raíz global, obtén el tipo de subred raíz y comprueba su campo CIDR maskSize desde subnet.status.ipv4Allocation.cidr:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \
        -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=network-root-range
    

    Haz los cambios siguientes:

    • GLOBAL_ROOT_ADMIN_KUBECONFIG: la ruta al archivo kubeconfig del clúster de administrador raíz.
    • ORG_NAME: el nombre de la organización.
    • SUBNET_TYPE: el tipo de subred, como vpc=infra-vpc, network-segment=admin, network-segment=data o vpc=default-vpc.

    Anota este valor como el CIDR total, que se usará más adelante.

  2. Obtén todas las subredes secundarias de la subred raíz y comprueba cada campo CIDR maskSize de subnet.status.ipv4Allocation.cidr:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \
        -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage!=network-root-range
    

    Anota cada valor como CIDR usado, ya que lo necesitarás más adelante.

  3. Calcula el CIDR disponible de la subred en función del CIDR total y del CIDR usado. Si el CIDR disponible no es lo suficientemente grande como para asignar la nueva subred, añade una nueva subred global de intervalo raíz de red. A continuación, ve al siguiente paso.

  4. Crea la nueva subred en el servidor de la API de administrador raíz global:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/SUBNET_TYPE_LABEL
        ipam.gdc.goog/usage: zone-network-root-range
      annotations:
        ipam.gdc.goog/pivot-destination: global-org
      name: SUBNET_NAME
      namespace: ORG_NAME
    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_ROOT_ADMIN_KUBECONFIG: la ruta al archivo kubeconfig del clúster de administrador raíz.
    • SUBNET_TYPE_LABEL: el tipo de subred, que debe ser uno de los siguientes valores: vpc: infra-vpc, network-segment: admin, network-segment: data o vpc: default-vpc.
    • SUBNET_NAME: el nombre de la nueva subred.
    • ORG_NAME: el nombre de la organización.
    • CIDR_PREFIX_LENGTH: longitud del prefijo de la nueva subred, como 20.
    • ZONE_NAME: el nombre de la zona de la subred, como zone1.
    • PARENT_SUBNET_NAME: el nombre de la subred principal, como infra-vpc-root-cidr, admin-external-root-cidr, data-external-root-cidr o default-vpc-root-cidr.
  5. Verifica que la subred esté lista comprobando que su estado Ready type es true.

  6. Verifica que se haya creado una subred global en el servidor de API global de la organización y que esté lista:

    kubectl --kubeconfig GLOBAL_ORG_ADMIN_KUBECONFIG get subnet -n NAMESPACE -l \
        ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-range
    

    Sustituye NAMESPACE por el espacio de nombres de la subred. Usa infra-network para la subred infra-vpc y platform para los demás tipos de subred.

  7. Verifica que la subred zonal se haya creado en el espacio de nombres de la organización del clúster de administrador raíz y que esté lista:

    kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get subnet -n ORG_NAME \
        -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-range
    
  8. Verifica que la subred zonal se haya creado en el servidor de la API Management en el espacio de nombres platform y que esté lista:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet -n NAMESPACE \
        -l ipam.gdc.goog/SUBNET_TYPE,ipam.gdc.goog/usage=zone-network-root-range
    

El aumento de la subred de tu organización en la zona que has especificado se ha completado. Tus administradores pueden crear más subredes secundarias a partir de la nueva subred.

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 esta categoría. Si se agota, debes crear una nueva network-root-rangesubred en el servidor de la API global. Si es necesario, puedes crear varias subredes globales raíz.

Para crear una subred network-root-range, sigue estos pasos:

  1. Crea un archivo YAML, como subnet-network-root.yaml, para la nueva subred global del intervalo raíz de la red:

    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/SUBNET_TYPE
        ipam.gdc.goog/usage: network-root-range
      annotations:
        ipam.gdc.goog/pivot-destination: global-org
      name: SUBNET_NAME
      namespace: ORG_NAME
    spec:
      ipv4Request:
        cidr: NEW_CIDR
      type: Root
    

    Haz los cambios siguientes:

    • SUBNET_TYPE: el tipo de subred, que debe ser uno de los siguientes valores: vpc: infra-vpc, network-segment: admin, network-segment: data o vpc: default-vpc.
    • API_SERVER_ANNOTATION: la anotación para identificar que esta subred debe cambiar a otro servidor de API. Para infra-vpc o los segmentos de trabajo de administrador y de red de datos, usa ipam.gdc.goog/pivot-destination: global-org. Si vas a añadir un nuevo intervalo raíz default-vpc, no definas esta anotación.
    • SUBNET_NAME: el nombre de la nueva subred.
    • ORG_NAME: el nombre de la organización.
    • 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 de administrador raíz global.