Configurar sub-redes para rede de carga de trabalho

Há sub-redes raiz globais atribuídas a cada zona isolada do Google Distributed Cloud (GDC) com a sub-rede da API pública de gerenciamento de endereços IP (IPAM). As sub-redes raiz globais hospedam o pool de intervalos de endereços IP raiz (CIDR) dividido em cada zona para inicializar todos os clusters na organização do locatário, incluindo o cluster de infraestrutura da organização e as VMs de carga de trabalho. Uma pequena parte do intervalo de endereços IP também é disponibilizada para sub-redes raiz como o pool de endereços IP anycast.

Depois que uma organização é criada, é possível concluir as seguintes tarefas operacionais para as sub-redes no seu universo do GDC:

Criar sub-redes globais de intervalo raiz para a nova zona

Cada zona precisa ter sub-redes globais de intervalo raiz. Durante a fase de inicialização da organização do universo do GDC, cada zona tem as sub-redes globais geradas automaticamente. No entanto, se uma nova zona for adicionada após a instalação inicial, será necessário criar manualmente as sub-redes globais de intervalo raiz para a nova zona.

Definir o intervalo CIDR para as sub-redes do intervalo raiz da rede da nova zona

Assim como as orientações de instalação da organização para definir um intervalo CIDR, os intervalos CIDR não podem se sobrepor entre si nem com zone-infra-cidr e as sub-redes globais raiz atuais, que são sub-redes com o rótulo ipam.gdc.goog/usage: network-root-range na especificação de recursos personalizados.

O zone-infra-cidr existe em cada zona e pode ser recuperado do Questionário de admissão de clientes (CIQ, na sigla em inglês) se o cliente o tiver definido.

  1. Para recuperar o zone-infra-cidr, execute:

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

    Anote o intervalo de CIDR.

  2. Você precisa ter um namespace com um nome que corresponda ao nome que será atribuído à sua organização. Confirme se este namespace existe:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get namespace ORG_NAME
    
  3. Recupere as sub-redes globais raiz atuais:

    • Para o cluster de administrador global da raiz, execute:

      kubectl –kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet \
          -n ORG_NAME  -l ipam.gdc.goog/usage=network-root-range
      
    • Para o servidor da API de administrador global da organização, execute:

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

      Anote todos os intervalos de CIDR da saída.

  4. Confirme se os novos intervalos CIDR planejados não se sobrepõem a nenhum dos intervalos anteriores.

Depois de confirmar que o novo intervalo de CIDR é válido para a nova zona, verifique se ele obedece às seguintes regras:

Campo de intervalo CIDR. Tamanho mínimo VPC/VRF Servidor de API global
zoneInfraVPCCIDR 17 VPC de infraestrutura Raiz global
zoneDefaultVPCCIDR 18 VPC padrão Organização global
zoneOrgAdminExternalCIDR 23 Segmento de rede do administrador Raiz global
zoneOrgDataExternalCIDR 23 Segmento de rede de dados Raiz global

Criar sub-redes no servidor da API de administrador raiz global

Para criar as sub-redes no servidor de API de administrador raiz global, siga estas etapas:

  1. Liste as zonas no seu universo e encontre o novo nome da zona:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get zone -A
    
  2. Crie a sub-rede infra-vpc do intervalo raiz da rede da zona para a nova zona da organização:

    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. Crie a sub-rede do segmento de dados da rede do intervalo raiz da rede da zona para a nova zona da organização:

    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. Crie a sub-rede do segmento de rede de administração do intervalo raiz da rede da zona para a nova zona da organização:

    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
    

Criar sub-redes no servidor da API de administrador global da organização

Você precisa criar a sub-rede VPC padrão no servidor de API do administrador global da organização no namespace platform depois que o servidor de API estiver em execução.

Crie e aplique o seguinte 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

Fazer upgrade de sub-redes

O recurso público Subnet não é compatível com o aumento automático de escala. Para adicionar mais intervalos CIDR a uma VPC ou segmento de rede gerenciado pelo cliente, você precisa criar novas sub-redes e agrupá-las com determinados rótulos. Devido ao acesso necessário ao cluster de administrador raiz, um cliente não pode fazer upgrade das sub-redes de forma independente.

Regras de agrupamento de sub-redes

As sub-redes são agrupadas em diferentes categorias por rótulos:

Categoria Rótulo
VPC padrão ipam.gdc.goog/vpc: default-vpc
VPC de infraestrutura ipam.gdc.goog/vpc: infra-vpc
Segmento de rede do administrador ipam.gdc.goog/network-segment: admin
Segmento de rede de dados ipam.gdc.goog/network-segment: data

Durante o bootstrap inicial, quatro intervalos CIDR foram especificados no Questionário de coleta de informações da organização (OIQ, na sigla em inglês). Essas quatro sub-redes globais foram criadas no servidor de API global durante a criação da organização do cliente. Essas sub-redes globais são o intervalo de CIDR de nível raiz para cada categoria em todas as zonas de uma organização. Todas as sub-redes globais de nível raiz têm o rótulo ipam.gdc.goog/usage: network-root-range.

Para cada zona, uma sub-rede global filha é criada no servidor de API global ao extraí-la das sub-redes de nível raiz. Cada sub-rede global filha hospeda o intervalo CIDR de uma categoria na zona específica e tem o rótulo ipam.gdc.goog/usage: zone-network-root-range. A sub-rede global filha de uma zona é propagada automaticamente para a zona específica.

Casos de uso típicos de ampliação

Para uma alocação mais eficiente de sub-redes adicionais para escalonar suas sub-redes atuais, considere os casos de uso recomendados para cada categoria de sub-rede. Determine a categoria que você quer fazer o upscaling antes de iniciar o processo.

VPC padrão

As sub-redes em default-vpc são usadas principalmente para alocar os CIDRs de pod e serviço para o cluster de serviço compartilhado, o cluster de usuário e o default-vpc-default-node-subnet para o endereço IP do nó do cluster e o endereço IP da carga de trabalho da organização.

A falha na criação de um cluster de usuário é um cenário comum em que o escalonamento vertical da sub-rede pode ser necessário.

A criação de um cluster de usuário pode falhar devido à incapacidade de encontrar a sub-rede principal para o CIDR do pod ou do serviço do cluster de usuário. Uma mensagem de exemplo para essa falha é semelhante a esta:

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

Esse problema pode ser causado por vários motivos diretamente relacionados à necessidade de aumentar a escala de uma sub-rede. Siga estas etapas para confirmar:

  1. Verifique os campos podCIDRSize e serviceCIDRSize na seção .spec.clusterNetwork do recurso personalizado Cluster:

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

    A saída será assim:

    Example:
    spec:
      clusterNetwork:
        podCIDRSize: 20
        serviceCIDRSize: 20
    
  2. Encontre as sub-redes principais da sub-rede atual:

    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
    

    A saída será assim:

    Example:
    NAME                     PARENT   READY   IPV4 CIDR        IPV6 CIDR
    default-vpc-zone0-cidr            True    198.51.100.0/18 
    
  3. Encontre todas as sub-redes alocadas pelas sub-redes principais:

    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
    

    A saída será assim:

    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
    

Neste exemplo, um CIDR principal /18 alocou quatro CIDRs /23, um CIDR /20, dois CIDRs /21, e o novo cluster de usuário está solicitando um CIDR /20 para podCIDRSize e um CIDR /20 para serviceCIDRSize, o que é insuficiente.

Nesse caso, é necessário adicionar mais sub-redes para uma categoria da VPC padrão.

VPC de infraestrutura

As sub-redes em infra-vpc são usadas principalmente para alocar os CIDRs de pod e serviço de uma organização para o cluster de infraestrutura e o cluster de perímetro, bem como o endereço IP do nó para o cluster de perímetro.

Como isso pertence à configuração interna da infraestrutura do GDC, e cada organização tem apenas um cluster de infraestrutura e um cluster de perímetro, normalmente o infra-vpc não precisa de operações de escalonamento vertical.

Segmento de rede do administrador

As sub-redes no segmento de rede de administrador são usadas principalmente para alocar endereços IP no roteamento e encaminhamento virtual (VRF) do administrador da organização. Há uma sub-rede de nó padrão ou a sub-rede com informações de gateway criada na organização. Essa sub-rede padrão aloca o endereço IP do nó do cluster da infraestrutura da organização e o endereço IP do nó do cluster do perímetro.

Como o segmento de rede do administrador pertence à configuração interna da infraestrutura do GDC, e cada organização só pode ter um cluster de infraestrutura e um cluster de perímetro, normalmente essa sub-rede não precisa de escalonamento vertical.

Segmento de rede de dados

As sub-redes no segmento de rede de dados são usadas principalmente para alocar endereços IP no VRF de dados da organização. Há uma sub-rede de nós padrão ou uma sub-rede com informações de gateway criada na organização. Essa sub-rede padrão aloca os endereços IP do nó do cluster de infraestrutura da organização e do nó do cluster de perímetro.

Como o segmento de rede de dados pertence à configuração interna da infraestrutura do GDC, e cada organização só pode ter um cluster de infraestrutura da organização e um cluster de perímetro, normalmente essa sub-rede não precisa de escalonamento vertical.

Adicionar mais sub-redes a uma categoria

É possível adicionar mais sub-redes a uma categoria com base no tipo de sub-rede. Os seguintes tipos podem adicionar mais sub-redes:

  • VPC de infraestrutura
  • Segmento de rede do administrador
  • Segmento de rede de dados
  • VPC padrão

Determine o tipo de sub-rede para o qual você quer adicionar mais sub-redes e siga as etapas abaixo:

  1. No servidor da API de administrador raiz global, extraia o tipo de sub-rede raiz e verifique o 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
    

    Substitua:

    • GLOBAL_ROOT_ADMIN_KUBECONFIG: o caminho para o arquivo kubeconfig do cluster de administrador raiz.
    • ORG_NAME: o nome da organização.
    • SUBNET_TYPE: o tipo de sub-rede, como vpc=infra-vpc, network-segment=admin, network-segment=data ou vpc=default-vpc.

    Anote esse valor como o CIDR total, que será referenciado mais tarde.

  2. Receba todas as sub-redes filhas da sub-rede raiz e verifique 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
    

    Anote cada valor como o CIDR usado, que será referenciado mais tarde.

  3. Calcule o CIDR disponível da sub-rede com base no CIDR total e no CIDR usado. Se o CIDR disponível não for grande o suficiente para alocar a nova sub-rede, adicione uma nova sub-rede global de intervalo raiz de rede. Em seguida, siga para a próxima etapa.

  4. Crie a nova sub-rede no servidor de API do administrador raiz 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
    

    Substitua:

    • GLOBAL_ROOT_ADMIN_KUBECONFIG: o caminho para o arquivo kubeconfig do cluster de administrador raiz.
    • SUBNET_TYPE_LABEL: o tipo de sub-rede, que precisa ser um destes valores: vpc: infra-vpc, network-segment: admin, network-segment: data ou vpc: default-vpc.
    • SUBNET_NAME: o nome da nova sub-rede;
    • ORG_NAME: o nome da organização.
    • CIDR_PREFIX_LENGTH: o tamanho do prefixo da nova sub-rede, como 20.
    • ZONE_NAME: o nome da zona da sub-rede, como zone1.
    • PARENT_SUBNET_NAME: o nome da sub-rede principal, como infra-vpc-root-cidr, admin-external-root-cidr, data-external-root-cidr ou default-vpc-root-cidr.
  5. Verifique se a sub-rede está pronta conferindo se o tipo de status Ready é true.

  6. Verifique se uma sub-rede global foi criada no servidor de API global da organização e se ela está pronta:

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

    Substitua NAMESPACE pelo namespace da sub-rede. Use infra-network para a sub-rede infra-vpc e platform para os outros tipos de sub-rede.

  7. Verifique se a sub-rede zonal foi criada no namespace da organização do cluster de administrador raiz e se ela está pronta:

    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. Verifique se a sub-rede zonal foi criada no servidor da API Management no namespace platform e se ela está pronta:

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

O aumento da sub-rede da sua organização na zona especificada foi concluído. Seus administradores podem criar mais sub-redes filhas com base na nova sub-rede.

Adicionar nova sub-rede global de intervalo raiz de rede

As sub-redes globais com o rótulo ipam.gdc.goog/usage: network-root-range hospedam o CIDR de todas as zonas dessa categoria. Se ele estiver esgotado, crie uma nova sub-rede network-root-range no servidor de API global. É possível criar várias sub-redes globais raiz, se necessário.

Para criar uma sub-rede network-root-range, siga estas etapas:

  1. Crie um arquivo YAML, como subnet-network-root.yaml, para sua nova sub-rede global de intervalo raiz da rede:

    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
    

    Substitua:

    • SUBNET_TYPE: o tipo de sub-rede, que precisa ser um dos seguintes valores: vpc: infra-vpc, network-segment: admin, network-segment: data ou vpc: default-vpc.
    • API_SERVER_ANNOTATION: a anotação para identificar que essa sub-rede precisa fazer a rotação para outro servidor de API. Para infra-vpc ou os segmentos de trabalho de administrador e datanet, use ipam.gdc.goog/pivot-destination: global-org. Se você estiver adicionando um novo intervalo raiz default-vpc, não defina essa anotação.
    • SUBNET_NAME: o nome da nova sub-rede;
    • ORG_NAME: o nome da organização.
    • NEW_CIDR: o novo CIDR da sub-rede. Esse CIDR não pode se sobrepor a nenhum CIDR em todas as sub-redes atuais com o rótulo ipam.gdc.goog/usage: network-root-range no mesmo servidor da API de administrador global da raiz.