Questa pagina descrive le funzionalità di networking di Google Distributed Cloud, tra cui subnet, sessioni di peering BGP e bilanciamento del carico.
Abilita l'API Distributed Cloud Edge Network
Prima di poter configurare il networking di Distributed Cloud, devi abilitare l'API Distributed Cloud Edge Network. Per farlo, completa i passaggi descritti in questa sezione.
Console
Nella console Google Cloud , vai alla pagina API Distributed Cloud Edge Network.
Fai clic su Attiva.
gcloud
Utilizza il seguente comando:
gcloud services enable edgenetwork.googleapis.com
Configura il networking di Distributed Cloud
Questa sezione descrive come configurare i componenti di rete di Distributed Cloud.
Una tipica configurazione di rete per Distributed Cloud consiste nei seguenti passaggi:
(Facoltativo) Inizializza la configurazione di rete della zona di destinazione, se necessario.
Creare una rete.
Crea una o più subnet all'interno della rete.
Stabilisci sessioni di peering BGP in direzione nord con i router PE utilizzando i collegamenti di interconnessione corrispondenti.
Stabilisci sessioni di peering BGP in direzione sud con i pod che eseguono i tuoi carichi di lavoro utilizzando le subnet corrispondenti.
(Facoltativo) Stabilisci sessioni di peering BGP di loopback per l'alta disponibilità.
Testa la configurazione.
Collega i tuoi pod alla rete.
(Facoltativo) Inizializza la configurazione di rete della zona Distributed Cloud
Devi inizializzare la configurazione di rete della tua zona Distributed Cloud nei seguenti casi:
- Subito dopo l'installazione dell'hardware Distributed Cloud presso la tua sede.
- Hai eseguito l'upgrade alla versione 1.3.0 o successive di Distributed Cloud in un deployment Distributed Cloud esistente, ma non hai partecipato all'anteprima privata dell'API Distributed Cloud Edge Network.
L'inizializzazione della configurazione di rete di una zona crea un router predefinito denominato default e una rete predefinita denominata default. Configura anche il router default per il peering con tutte le interconnessioni richieste quando hai ordinato l'hardware Distributed Cloud creando i collegamenti di interconnessione corrispondenti. Questa configurazione fornisce alla tua
implementazione di Distributed Cloud una connettività uplink di base
alla tua rete locale.
L'inizializzazione della configurazione di rete di una zona è una procedura una tantum. Per istruzioni complete, vedi Inizializzare la configurazione di rete di una zona.
Crea una rete
Per creare una nuova rete, segui le istruzioni riportate in Creare una rete. Devi anche creare almeno una subnet all'interno della rete per consentire ai nodi Distributed Cloud di connettersi alla rete.
Crea una o più subnet
Per creare una subnet, segui le istruzioni riportate in Creare una subnet. Devi creare almeno una subnet nella tua rete per consentire ai nodi di accedere alla rete. La VLAN corrispondente a ogni subnet che crei è disponibile automaticamente per tutti i nodi nella zona.
Definisci sessioni di peering BGP in direzione nord
Quando crei una rete e le relative subnet, queste sono locali alla zona Distributed Cloud. Per attivare la connettività in uscita, devi stabilire almeno una sessione di peering BGP in direzione nord tra la rete e i router di peering perimetrali.
Per stabilire una sessione di peering BGP in direzione nord:
Elenca gli interconnessioni disponibili nella tua zona e poi seleziona l'interconnessione di destinazione per questa sessione di peering.
Crea uno o più allegati di interconnessione sull'interconnessione selezionata. Gli allegati di interconnessione collegano il router che crei nel passaggio successivo all'interconnessione selezionata.
Crea un router. Questo router instrada il traffico tra l'interconnessione e la tua rete utilizzando i collegamenti di interconnessione che hai creato nel passaggio precedente.
Aggiungi un'interfaccia al router per ogni collegamento di interconnessione che hai creato in precedenza in questa procedura. Per ogni interfaccia, utilizza l'indirizzo IP dello switch top-of-rack (ToR) corrispondente nel rack Distributed Cloud. Per le istruzioni, vedi Stabilire una sessione di peering in direzione nord.
Aggiungi un peer per ogni interfaccia creata sul router nel passaggio precedente.
Stabilisci sessioni di peering BGP in uscita
Per attivare la connettività in entrata ai tuoi carichi di lavoro dalla tua rete locale, devi stabilire una o più sessioni di peering BGP in uscita tra i router di peering edge e la subnet a cui appartengono i tuoi pod. L'indirizzo IP del gateway per ogni subnet è l'indirizzo IP dello switch ToR corrispondente nel rack Distributed Cloud.
Per stabilire una sessione di peering BGP in direzione sud:
Aggiungi un'interfaccia al router nella rete di destinazione per ogni subnet che vuoi eseguire il provisioning con connettività in entrata. Per istruzioni, vedi Stabilire una sessione di peering in uscita.
Aggiungi un peer per ogni interfaccia creata sul router nel passaggio precedente.
(Facoltativo) Stabilisci sessioni di peering BGP di loopback
Per abilitare la connettività ad alta disponibilità tra i tuoi carichi di lavoro e la tua rete locale, puoi stabilire una sessione di peering BGP di loopback tra il pod di destinazione e entrambi gli switch ToR nel rack Distributed Cloud. Una sessione di peering loopback stabilisce due sessioni di peering indipendenti per il pod, una con ciascun switch ToR.
Per stabilire una sessione di peering BGP di loopback:
Aggiungi un'interfaccia di loopback al router nella rete di destinazione. Per istruzioni, vedi Stabilire una sessione di peering di loopback.
Aggiungi un peer per l'interfaccia di loopback.
Test della configurazione
Per testare la configurazione dei componenti di rete che hai creato, segui questi passaggi:
Connettere i pod alla rete
Per connettere i tuoi Pod alla rete e configurare le funzioni di rete avanzate, segui le istruzioni riportate in Operatore di funzioni di rete.
Bilanciamento del carico
Distributed Cloud viene fornito con una soluzione di bilanciamento del carico di rete in bundle basata su MetalLB in modalità Layer 2. Puoi utilizzare questa soluzione per esporre i servizi eseguiti nella tua zona Distributed Cloud al mondo esterno utilizzando indirizzi IP virtuali (VIP) nel seguente modo:
- L'amministratore di rete pianifica la topologia di rete e specifica la
subnet dell'indirizzo IPv4 virtuale richiesta quando ordina
Distributed Cloud. Google configura l'hardware
Distributed Cloud di conseguenza prima della consegna.
Tieni presente quanto segue:
- Questa subnet VIP è condivisa tra tutti i cluster Kubernetes in esecuzione all'interno della zona Distributed Cloud.
- Una route per la subnet VIP richiesta viene pubblicizzata tramite le sessioni BGP tra la zona Distributed Cloud e la tua rete locale.
- Il primo (ID rete), il secondo (gateway predefinito) e l'ultimo (indirizzo di broadcast) indirizzo della subnet sono riservati per la funzionalità di base del sistema. Non assegnare questi indirizzi ai pool di indirizzi delle configurazioni di MetalLB.
- Ogni cluster deve utilizzare un intervallo VIP separato che rientri nella subnet VIP configurata.
- Quando crei un cluster nella tua zona Distributed Cloud,
l'amministratore del cluster specifica i pool di indirizzi di pod e servizi ClusterIP
utilizzando la notazione CIDR. L'amministratore di rete fornisce la subnet VIP
LoadBalancerappropriata all'amministratore del cluster. Dopo la creazione del cluster, l'amministratore del cluster configura i pool VIP corrispondenti. Per i cluster del control plane remoto, devi modificare il ConfigMap
metallb-confignello spazio dei nomimetallb-systemutilizzando il comandokubectl editokubectl replace. Non utilizzare il comandokubectl applyperché Distributed Cloud sovrascrive le modifiche se lo fai.Il seguente esempio illustra una configurazione di questo tipo:
# metallb-config.yaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: metallb-config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.1.2-192.168.1.254Per i cluster del control plane locale, devi specificare i pool VIP utilizzando il flag
--external-lb-ipv4-address-poolsquando crei il cluster. Per maggiori informazioni, vedi Modalità di sopravvivenza.L'amministratore del cluster crea i servizi
LoadBalancerKubernetes� appropriati.
I nodi Distributed Cloud in un singolo pool di nodi condividono un dominio di livello 2 comune e sono quindi anche nodi del bilanciatore del carico MetalLB. I nodi del control plane Distributed Cloud che vengono eseguiti su Google Cloud non funzionano come nodi del bilanciatore del carico.
Ingresso di Distributed Cloud
Oltre al bilanciamento del carico, Distributed Cloud supporta anche le risorse Kubernetes Ingress. Una risorsa Ingress Kubernetes
controlla il flusso di traffico HTTP(S) verso i servizi Kubernetes eseguiti sui tuoi
cluster Distributed Cloud. L'esempio seguente
mostra una risorsa Ingress tipica:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
service:
name: my-service
port:
number: 80
path: /foo
pathType: Prefix
Se configurato, il traffico di rete passa attraverso il servizio istio-ingress,
a cui per impostazione predefinita viene assegnato un indirizzo IP casuale dai pool VIP specificati
nella configurazione di MetalLB. Puoi selezionare un indirizzo IP specifico o un indirizzo IP virtuale dalla configurazione di MetalLB utilizzando il campo loadBalancerIP nella definizione del servizio istio-ingress. Ad esempio:
apiVersion: v1
kind: Service
metadata:
labels:
istio: ingress-gke-system
release: istio
name: istio-ingress
namespace: gke-system
spec:
loadBalancerIP: <targetLoadBalancerIPaddress>
Disattiva la risorsa Distributed Cloud Ingress predefinita
Per impostazione predefinita, quando crei un cluster Distributed Cloud, Distributed Cloud configura automaticamente il servizio istio-ingress per il cluster. Hai la possibilità di creare un cluster
Distributed Cloud senza il servizio
istio-ingress. Per farlo, segui questa procedura.
gcloud
Crea un file di configurazione YAML denominato
SystemsAddonConfig.yamlcon il seguente contenuto:systemAddonsConfig: ingress: disabled: true
Passa il file
SystemsAddonConfig.yamlutilizzando il flag--system-addons-confignel comando di creazione del cluster. Per utilizzare questa funzionalità, devi utilizzare la versionegcloud alpha. Ad esempio:gcloud alpha edge-cloud container clusters create MyGDCECluster1 --location us-west1 \ --system-addons-config=SystemsAddonConfig.yamlPer saperne di più sulla creazione di un cluster Distributed Cloud, consulta Crea un cluster.
API
Aggiungi i seguenti contenuti JSON al payload JSON nella richiesta di creazione del cluster:
"systemAddonConfig" { "ingress" { "disabled": true } }Invia la richiesta di creazione del cluster come descritto in Creare un cluster.
Supporto SCTP
Distributed Cloud supporta Stream Control Transmission Protocol (SCTP) sull'interfaccia di rete principale per il networking interno ed esterno. Il supporto SCTP include i tipi di servizio NodePort, LoadBalancer e ClusterIP. I pod possono utilizzare SCTP per comunicare con altri pod e risorse esterne. L'esempio seguente illustra come configurare IPERF come servizio ClusterIP utilizzando SCTP:
apiVersion: v1
kind: Pod
metadata:
name: iperf3-sctp-server-client
labels:
app.kubernetes.io/name: iperf3-sctp-server-client
spec:
containers:
- name: iperf3-sctp-server
args: ['-s', '-p 31390']
ports:
- containerPort: 31390
protocol: SCTP
name: server-sctp
- name: iperf3-sctp-client
...
---
apiVersion: v1
kind: Service
metadata:
name: iperf3-sctp-svc
spec:
selector:
app.kubernetes.io/name: iperf3-sctp-server-client
ports:
- port: 31390
protocol: SCTP
targetPort: server-sctp
Moduli kernel SCTP
A partire dalla versione 1.5.0, Distributed Cloud configura
il modulo kernel sctp Edge OS come caricabile. In questo modo puoi caricare i tuoi
stack di protocolli SCTP nello spazio utente del kernel.
Inoltre, Distributed Cloud carica i seguenti moduli nel kernel per impostazione predefinita:
| Nome modulo | Nome configurazione |
|---|---|
fou |
CONFIG_NET_FOU |
nf_conntrack_proto_gre |
CONFIG_NF_CT_PROTO_GRE |
nf_conntrack_proto_sctp |
CONFIG_NF_CT_PROTO_SCTP |
inotify |
CONFIG_INOTIFY_USER |
xt_redirect |
CONFIG_NETFILTER_XT_TARGET_REDIRECT |
xt_u32 |
CONFIG_NETFILTER_XT_MATCH_U32 |
xt_multiport |
CONFIG_NETFILTER_XT_MATCH_MULTIPORT |
xt_statistic |
CONFIG_NETFILTER_XT_MATCH_STATISTIC |
xt_owner |
CONFIG_NETFILTER_XT_MATCH_OWNER |
xt_conntrack |
CONFIG_NETFILTER_XT_MATCH_CONNTRACK |
xt_mark |
CONFIG_NETFILTER_XT_MARK |
ip6table_mangle |
CONFIG_IP6_NF_MANGLE |
ip6_tables |
CONFIG_IP6_NF_IPTABLES |
ip6table_filter |
CONFIG_IP6_NF_FILTER |
ip6t_reject |
CONFIG_IP6_NF_TARGET_REJECT |
iptable_mangle |
CONFIG_IP_NF_MANGLE |
ip_tables |
CONFIG_IP_NF_IPTABLES |
iptable_filter |
CONFIG_IP_NF_FILTER |
ClusterDNS risorsa
Distributed Cloud supporta la risorsa Google Distributed Cloud
ClusterDNS per configurare i server dei nomi upstream per domini specifici
utilizzando la sezione spec.domains. Per ulteriori informazioni sulla configurazione di questa risorsa, consulta spec.domains.