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 le subnet richieste per una nuova zona.
- Crea subnet aggiuntive per una zona esistente.
- Crea subnet di nodi aggiuntive per l'organizzazione.
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.
Per recuperare
zone-infra-cidr, esegui:kubectl --kubeconfig ROOT_ADMIN_KUBECONFIG get cidrclaim -n gpc-system zone-infra-cidrPrendi nota dell'intervallo CIDR.
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_NAMERecupera 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-rangePer 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-rangePrendi nota di tutti gli intervalli CIDR dell'output.
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:
Elenca le zone nel tuo universo e trova il nuovo nome della zona:
kubectl --kubeconfig GLOBAL_ROOT_ADMIN_KUBECONFIG get zone -ACrea la subnet
infra-vpcdell'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 EOFCrea 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 EOFCrea 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:
Controlla i campi
podCIDRSizeeserviceCIDRSizenella sezione.spec.clusterNetworkdella risorsa personalizzataCluster:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get cluster \ -n platform USER_CLUSTER_NAME -oyamlL'output è simile al seguente:
Example: spec: clusterNetwork: podCIDRSize: 20 serviceCIDRSize: 20Trova 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-rangeL'output è simile al seguente:
Example: NAME PARENT READY IPV4 CIDR IPV6 CIDR default-vpc-zone0-cidr True 198.51.100.0/18Trova 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-rangeL'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:
Nel server API di amministrazione principale globale, recupera il tipo di subnet principale e controlla il campo CIDR
maskSizedasubnet.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-rangeSostituisci 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 esempiovpc=infra-vpc,network-segment=admin,network-segment=dataovpc=default-vpc.
Annota questo valore come CIDR totale, a cui verrà fatto riferimento in un secondo momento.
Recupera tutte le subnet secondarie della subnet radice e controlla ogni campo CIDR
maskSizedasubnet.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-rangePrendi nota di ogni valore come CIDR utilizzato, a cui verrà fatto riferimento in un secondo momento.
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.
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 EOFSostituisci 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: dataovpc: 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 esempio20.ZONE_NAME: il nome della zona per la subnet, ad esempiozone1.PARENT_SUBNET_NAME: il nome della subnet principale, ad esempioinfra-vpc-root-cidr,admin-external-root-cidr,data-external-root-cidrodefault-vpc-root-cidr.
Verifica che la subnet sia pronta controllando che il tipo di stato
Readysiatrue.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-rangeSostituisci NAMESPACE con lo spazio dei nomi della subnet. Utilizza
infra-networkper la subnetinfra-vpceplatformper gli altri tipi di subnet.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-rangeVerifica che la subnet zonale sia creata nel server API Management nello spazio dei nomi
platforme 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:
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: RootSostituisci quanto segue:
SUBNET_TYPE: il tipo di subnet, che deve essere uno dei seguenti valori:vpc: infra-vpc,network-segment: admin,network-segment: dataovpc: default-vpc.API_SERVER_ANNOTATION: l'annotazione per identificare che questa subnet deve passare a un altro server API. Perinfra-vpco i segmenti di lavoro di amministrazione e datanet, utilizzaipam.gdc.goog/pivot-destination: global-org. Se stai aggiungendo un nuovo intervallo principaledefault-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'etichettaipam.gdc.goog/usage: network-root-rangenello stesso server API di amministrazione della radice globale.