Configura le subnet per il networking dei carichi di lavoro

Per ogni zona air-gapped di Google Distributed Cloud (GDC) sono assegnate subnet root globali con la subnet dell'API pubblica di gestione degli indirizzi IP (IPAM). Le subnet root globali ospitano il pool di intervalli di indirizzi IP (CIDR) root suddiviso in ogni zona per eseguire il bootstrap di tutti i cluster all'interno dell'organizzazione tenant, inclusi il cluster di infrastruttura dell'organizzazione e le VM dei carichi di lavoro. Una piccola parte dell'intervallo di indirizzi IP viene resa disponibile anche alle subnet radice come pool di indirizzi IP anycast.

Dopo aver creato un'organizzazione, puoi completare le seguenti attività operative per le subnet nel tuo universo GDC:

Crea subnet globali dell'intervallo principale per la nuova zona

Ogni zona deve avere subnet globali dell'intervallo radice. Durante la fase di bootstrap iniziale dell'organizzazione dell'universo GDC, le subnet globali vengono generate automaticamente in ogni zona. Tuttavia, se viene aggiunta una nuova zona dopo l'installazione iniziale, devi creare manualmente le subnet globali dell'intervallo radice per la nuova zona.

Definisci l'intervallo CIDR per le subnet dell'intervallo radice di rete della nuova zona

Analogamente alle indicazioni per l'installazione dell'organizzazione per la definizione di un intervallo CIDR, gli intervalli CIDR non possono sovrapporsi tra loro e non possono sovrapporsi a zone-infra-cidr e alle subnet globali root esistenti, ovvero le subnet con l'etichetta ipam.gdc.goog/usage: network-root-range nella specifica della risorsa personalizzata.

Il zone-infra-cidr esiste in ogni zona e può essere recuperato dal questionario di acquisizione del cliente (CIQ) se il cliente lo ha definito.

  1. Per recuperare zone-infra-cidr, esegui:

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

    Prendi nota dell'intervallo CIDR.

  2. Devi avere uno spazio dei nomi con un nome che corrisponda a quello che assegnerai alla tua organizzazione. Conferma che questo spazio dei nomi esiste:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get namespace ORG_NAME
    
  3. Recupera le subnet globali root esistenti:

    • Per il cluster di amministrazione root globale, esegui:

      kubectl –kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get subnet \
          -n ORG_NAME  -l ipam.gdc.goog/usage=network-root-range
      
    • Per il server API di amministrazione dell'organizzazione globale, esegui:

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

      Prendi nota di tutti gli intervalli CIDR dell'output.

  4. Verifica che i nuovi intervalli CIDR pianificati non si sovrappongano a nessuno degli intervalli CIDR precedenti.

Dopo aver verificato che il nuovo intervallo CIDR sia valido per la nuova zona, conferma che rispetti le seguenti regole:

Campo Intervallo CIDR. Dimensioni minime VPC/VRF Server API globale
zoneInfraVPCCIDR 17 VPC dell'infrastruttura Radice globale
zoneDefaultVPCCIDR 18 VPC predefinito Organizzazione globale
zoneOrgAdminExternalCIDR 23 Segmento di rete amministrativa Radice globale
zoneOrgDataExternalCIDR 23 Segmento di rete dati Radice globale

Crea subnet nel server API di amministrazione root globale

Per creare le subnet nel server API di amministrazione root globale, completa i seguenti passaggi:

  1. Elenca le zone nel tuo universo e trova il nuovo nome della zona:

    kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get zone -A
    
  2. Crea la subnet infra-vpc dell'intervallo radice di rete della zona per la nuova zona dell'organizzazione:

    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 subnet del segmento di rete dati dell'intervallo radice di rete della zona per la nuova zona dell'organizzazione:

    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 subnet del segmento di rete di amministrazione dell'intervallo radice della rete di zona per la nuova zona dell'organizzazione:

    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
    

Crea subnet nel server API di amministrazione dell'organizzazione globale

Devi creare la subnet VPC predefinita nel server API dell'amministratore dell'organizzazione globale all'interno dello spazio dei nomi platform dopo l'esecuzione del server API.

Crea e applica la seguente risorsa personalizzata 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

Subnet di upscaling

La risorsa pubblica Subnet non supporta l'upscaling automatico. Per aggiungere un altro intervallo CIDR a un VPC o a un segmento di rete gestito dal cliente, devi creare nuove subnet e raggrupparle con determinate etichette. A causa dell'accesso obbligatorio al cluster di amministrazione principale, un cliente non può aumentare le proprie subnet in modo indipendente.

Regole di raggruppamento delle subnet

Le subnet sono raggruppate in categorie diverse in base alle etichette:

Categoria Etichetta
VPC predefinito ipam.gdc.goog/vpc: default-vpc
VPC dell'infrastruttura ipam.gdc.goog/vpc: infra-vpc
Segmento di rete amministrativa ipam.gdc.goog/network-segment: admin
Segmento di rete dati ipam.gdc.goog/network-segment: data

Durante il bootstrap iniziale, sono stati specificati quattro intervalli CIDR nel questionario di acquisizione dell'organizzazione (OIQ). Queste quattro subnet globali sono state create nel server API globale durante la creazione dell'organizzazione del cliente. Queste subnet globali sono l'intervallo CIDR di livello principale per ogni categoria in tutte le zone di un'organizzazione. Tutte le subnet globali di primo livello hanno l'etichetta ipam.gdc.goog/usage: network-root-range.

Per ogni zona, viene creata una subnet globale secondaria nel server API globale estrapolandola dalle subnet di livello radice. Ogni subnet globale secondaria ospita l'intervallo CIDR per una categoria nella zona specifica e ha l'etichetta ipam.gdc.goog/usage: zone-network-root-range. La subnet globale secondaria per una zona viene propagata automaticamente alla zona specifica.

Casi d'uso tipici dell'upscaling

Per l'allocazione più efficiente di subnet aggiuntive per l'upscaling delle subnet esistenti, prendi in considerazione i casi d'uso consigliati per ogni categoria di subnet. Determina la categoria che vuoi eseguire l'upscaling prima di iniziare la procedura.

VPC predefinito

Le subnet in default-vpc vengono utilizzate principalmente per allocare i CIDR di pod e servizi per il cluster di servizi condivisi, il cluster utente e default-vpc-default-node-subnet per l'indirizzo IP del nodo del cluster e l'indirizzo IP del carico di lavoro per l'organizzazione.

La mancata creazione di un cluster utente è uno scenario comune in cui potrebbe essere necessario aumentare le dimensioni della subnet.

La creazione di un cluster utente potrebbe non riuscire a causa dell'impossibilità di trovare la subnet principale per il CIDR del pod o del servizio del cluster utente. Un messaggio di esempio per questo errore è simile al seguente:

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

Questo problema potrebbe essere dovuto a diversi motivi direttamente correlati alla necessità di aumentare le dimensioni di una subnet. Per confermare, segui questi passaggi:

  1. Controlla i campi podCIDRSize e serviceCIDRSize nella sezione .spec.clusterNetwork della risorsa personalizzata Cluster:

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

    L'output è simile al seguente:

    Example:
    spec:
      clusterNetwork:
        podCIDRSize: 20
        serviceCIDRSize: 20
    
  2. Trova le subnet principali della subnet esistente:

    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
    

    L'output è simile al seguente:

    Example:
    NAME                     PARENT   READY   IPV4 CIDR        IPV6 CIDR
    default-vpc-zone0-cidr            True    198.51.100.0/18 
    
  3. Trova tutte le subnet allocate dalle subnet principali:

    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
    

    L'output è simile al seguente:

    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
    

In questo esempio, un CIDR principale /18 ha allocato quattro CIDR /23, un CIDR /20 e due CIDR /21. Il nuovo cluster utente richiede un CIDR /20 per podCIDRSize e un CIDR /20 per serviceCIDRSize, il che non è sufficiente.

In questo caso, devi aggiungere altre subnet per una categoria per il VPC predefinito.

VPC dell'infrastruttura

Le subnet in infra-vpc vengono utilizzate principalmente per allocare i CIDR di pod e servizi di un'organizzazione per il cluster di infrastruttura e il cluster perimetrale, nonché l'indirizzo IP del nodo per il cluster perimetrale.

Poiché appartiene alla configurazione dell'infrastruttura GDC interna e ogni organizzazione ha un solo cluster di infrastruttura dell'organizzazione e un solo cluster perimetrale, in genere infra-vpc non richiede operazioni di upscaling.

Segmento di rete amministrativa

Le subnet nel segmento di rete di amministrazione vengono utilizzate principalmente per allocare indirizzi IP nel VRF (virtual routing and forwarding) di amministrazione dell'organizzazione. Nell'organizzazione viene creata una subnet del nodo predefinita o la subnet con le informazioni sul gateway. Questa subnet predefinita alloca l'indirizzo IP per l'infrastruttura dell'organizzazione e l'indirizzo IP del nodo del cluster perimetrale.

Poiché il segmento di rete amministrativa appartiene alla configurazione dell'infrastruttura GDC interna e ogni organizzazione può avere un solo cluster di infrastruttura dell'organizzazione e un solo cluster perimetrale, in genere questa subnet non richiede l'upscaling.

Segmento di rete dati

Le subnet nel segmento di rete dati vengono utilizzate principalmente per allocare indirizzi IP nel VRF dei dati dell'organizzazione. Nell'organizzazione viene creata una subnet di nodi predefinita o una subnet con informazioni sul gateway. Questa subnet predefinita alloca gli indirizzi IP per l'indirizzo IP del nodo del cluster di infrastruttura dell'organizzazione e l'indirizzo IP del nodo del cluster perimetrale.

Poiché il segmento di rete di dati appartiene alla configurazione dell'infrastruttura GDC interna e ogni organizzazione può avere un solo cluster di infrastruttura dell'organizzazione e un solo cluster perimetrale, in genere questa subnet non richiede l'upscaling.

Aggiungere altre subnet per una categoria

Puoi aggiungere altre subnet per una categoria in base al tipo di subnet. I seguenti tipi sono idonei per l'aggiunta di altre subnet:

  • VPC dell'infrastruttura
  • Segmento di rete amministrativa
  • Segmento di rete dati
  • VPC predefinito

Determina il tipo di subnet per cui vuoi aggiungere altre subnet, quindi completa i seguenti passaggi per quel tipo di subnet:

  1. Nel server API di amministrazione principale globale, recupera il tipo di subnet principale e controlla il campo CIDR maskSize da 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
    

    Sostituisci quanto segue:

    • GLOBAL_ROOT_ADMIN_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione root.
    • ORG_NAME: il nome dell'organizzazione.
    • SUBNET_TYPE: il tipo di subnet, ad esempio vpc=infra-vpc, network-segment=admin, network-segment=data o vpc=default-vpc.

    Annota questo valore come CIDR totale, a cui verrà fatto riferimento in un secondo momento.

  2. Recupera tutte le subnet secondarie della subnet radice e controlla ogni campo CIDR maskSize da 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
    

    Prendi nota di ogni valore come CIDR utilizzato, a cui verrà fatto riferimento in un secondo momento.

  3. Calcola il CIDR disponibile della subnet in base al CIDR totale e al CIDR utilizzato. Se il CIDR disponibile non è sufficientemente grande per allocare la nuova subnet, aggiungi una nuova subnet globale con intervallo root di rete. Quindi, procedi al passaggio successivo.

  4. Crea la nuova subnet nel server API di amministrazione principale globale:

    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
    

    Sostituisci quanto segue:

    • GLOBAL_ROOT_ADMIN_KUBECONFIG: il percorso del file kubeconfig del cluster di amministrazione root.
    • SUBNET_TYPE_LABEL: il tipo di subnet, che deve essere uno dei seguenti valori: vpc: infra-vpc, network-segment: admin, network-segment: data o vpc: default-vpc.
    • SUBNET_NAME: il nome della nuova subnet.
    • ORG_NAME: il nome dell'organizzazione.
    • CIDR_PREFIX_LENGTH: la lunghezza del prefisso della nuova subnet, ad esempio 20.
    • ZONE_NAME: il nome della zona per la subnet, ad esempio zone1.
    • PARENT_SUBNET_NAME: il nome della subnet principale, ad esempio infra-vpc-root-cidr, admin-external-root-cidr, data-external-root-cidr o default-vpc-root-cidr.
  5. Verifica che la subnet sia pronta controllando che il tipo di stato Ready sia true.

  6. Verifica che sia stata creata una subnet globale nel server API globale dell'organizzazione e che sia 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
    

    Sostituisci NAMESPACE con lo spazio dei nomi della subnet. Utilizza infra-network per la subnet infra-vpc e platform per gli altri tipi di subnet.

  7. Verifica che la subnet zonale sia creata nello spazio dei nomi dell'organizzazione del cluster di amministrazione radice e che sia 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. Verifica che la subnet zonale sia creata nel server API Management nello spazio dei nomi platform e che sia 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
    

L'upscale della subnet per la tua organizzazione nella zona specificata è stato completato. Gli amministratori possono creare altre subnet secondarie dalla nuova subnet.

Aggiungi una nuova subnet globale dell'intervallo radice di rete

Le subnet globali con l'etichetta ipam.gdc.goog/usage: network-root-range ospitano il CIDR per tutte le zone di questa categoria. Se è esaurito, devi creare una nuova subnet network-root-range nel server API globale. Se necessario, puoi creare più subnet globali radice.

Per creare una nuova subnet network-root-range:

  1. Crea un file YAML, ad esempio subnet-network-root.yaml, per la nuova subnet globale dell'intervallo radice della rete:

    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
    

    Sostituisci quanto segue:

    • SUBNET_TYPE: il tipo di subnet, che deve essere uno dei seguenti valori: vpc: infra-vpc, network-segment: admin, network-segment: data o vpc: default-vpc.
    • API_SERVER_ANNOTATION: l'annotazione per identificare che questa subnet deve passare a un altro server API. Per infra-vpc o i segmenti di lavoro di amministrazione e datanet, utilizza ipam.gdc.goog/pivot-destination: global-org. Se stai aggiungendo un nuovo intervallo principale default-vpc, non impostare questa annotazione.
    • SUBNET_NAME: il nome della nuova subnet.
    • ORG_NAME: il nome dell'organizzazione.
    • NEW_CIDR: il nuovo CIDR per la subnet. Questo CIDR non può sovrapporsi a nessun CIDR in tutte le subnet esistenti con l'etichetta ipam.gdc.goog/usage: network-root-range nello stesso server API di amministrazione della radice globale.