Questa pagina mostra come abilitare più interfacce su nodi e pod in un Cluster Google Kubernetes Engine (GKE) che utilizza il supporto di più reti per i pod. Il supporto di più reti è disponibile solo per i progetti attivato con GKE Enterprise
Dovresti già conoscere le nozioni generali concetti di networking, terminologia e concetti specifiche di questa funzionalità, oltre a requisiti e limitazioni per su più reti per i pod.
Per ulteriori informazioni, consulta Informazioni sul supporto di più reti per i pod.
Requisiti e limitazioni
Il supporto di più reti per i pod prevede i requisiti e le limitazioni seguenti:
Requisiti
- GKE versione 1.28 o successive.
- Abilita la versione Google Kubernetes Engine (GKE) Enterprise
- Il supporto di più reti per i pod utilizza lo stesso Specifiche a livello di VM come multi-NIC per Compute Engine.
- Il supporto di più reti per i pod richiede GKE Dataplane V2.
- Il supporto di più reti per i pod è disponibile solo per Nodi di Container-Optimized OS che eseguono la versione m101 o successive.
Limitazioni generali
- Il supporto di più reti per i pod non funziona per i cluster abilitati per il networking a doppio stack.
- Il VPC condiviso è supportato solo su GKE versione 1.28 o successive.
- CIDR multi-pod è supportato solo su GKE versione 1.29 o successive e solo per predefinita della rete di pod.
- Qualsiasi rete di pod in un singolo cluster GKE non può che si sovrappongono a intervalli CIDR.
- Quando abiliti il supporto di più reti per i pod, non puoi aggiungere o rimuovere interfacce di rete di nodi o reti di pod dopo la creazione di un pool di nodi. A se modifichi queste impostazioni, devi ricreare il pool di nodi.
- Per impostazione predefinita, l'accesso a internet non è disponibile su interfacce aggiuntive di delle reti di pod all'interno del pod. Tuttavia, puoi abilitarla manualmente utilizzando Cloud NAT.
- Non puoi modificare il gateway predefinito all'interno di un pod con più interfacce attraverso l'API. Il gateway predefinito deve essere connesso rete di pod.
- La rete di pod predefinita deve essere sempre inclusa nei pod, anche se crei interfacce o reti di pod aggiuntive.
- Non puoi configurare la funzionalità di più reti se Managed Hubble è stato configurato.
- Per utilizzare un VPC condiviso, assicurati che il cluster GKE sia con la versione 1.28.4 o successiva.
- Per i deployment di reti VPC condivise, tutte le interfacce di rete (NIC) collegate ai nodi devono appartenere allo stesso progetto del progetto host.
Limitazioni relative a DPDK (Device and Data Plane Development Kit)
- Un NIC di una VM passato a un pod come NIC di tipo
Device
non è disponibile ad altri più pod sullo stesso nodo. - I pod che utilizzano la modalità DPDK devono essere eseguiti in modalità con privilegi per accedere a VFIO dispositivi mobili.
- In modalità DPDK, un dispositivo viene considerato come una risorsa di nodo e viene collegato solo sul primo container (non init) nel pod. Se vuoi suddividere più elementi dei dispositivi DPDK tra i container nello stesso pod, in pod separati.
Limitazioni di scalabilità
GKE offre un'architettura di rete flessibile scalare il tuo cluster. Puoi aggiungere altre reti di nodi e pod nel tuo cluster. Puoi scalare il cluster come segue:
- Puoi aggiungere fino a 7 reti di nodi aggiuntive a ogni nodo GKE piscina. Si tratta dello stesso limite di scalabilità per le VM di Compute Engine.
- A ogni pod devono essere collegate meno di 7 reti aggiuntive.
- Puoi configurare fino a 35 reti di pod sulle 8 reti di nodi all'interno di un
un pool di nodi singolo. Puoi suddividerlo in diverse combinazioni,
come:
- 7 reti di nodi con 5 reti di pod ciascuna
- 5 reti di nodi con 7 reti di pod ciascuna
- 1 rete di nodi con 30 reti di pod. Il limite per intervalli secondari per è 30.
- Puoi configurare fino a 50 reti di pod per cluster.
- Puoi configurare fino a un massimo di 32 pod a più reti per nodo.
- Puoi avere fino a 3000 nodi con più interfacce.
- Puoi avere fino a 100.000 interfacce aggiuntive in tutti i pod.
- Puoi configurare fino a un massimo di 1000 nodi con reti di tipo
Device
. - Puoi configurare fino a un massimo di 4 reti di tipo
Device
per nodo.
Prezzi
le funzioni Network Function Optimizer (NFO), tra cui multi-rete, delle prestazioni e il supporto del Reindirizzamento servizio per i pod (Anteprima) sono supportato solo sui cluster che si trovano in progetti abilitati con GKE Enterprise A comprendi le tariffe applicate per l'abilitazione della versione Google Kubernetes Engine (GKE) Enterprise; consulta Prezzi di GKE Enterprise.
Esegui il deployment di pod su più reti
Per eseguire il deployment dei pod con più reti, segui questi passaggi:
- Prepara un VPC aggiuntivo, una subnet (node-network) e intervalli secondari (Pod-network).
- Crea un cluster GKE abilitato per più reti con il comando Google Cloud CLI.
- Crea un nuovo pool di nodi GKE connesso alla rete di nodi e alla rete di pod aggiuntive il comando Google Cloud CLI.
- Crea una rete di pod e fai riferimento alla gli intervalli VPC, subnet e secondari corretti in più reti utilizzando l'API Kubernetes.
- Nella configurazione del carico di lavoro, fai riferimento alla rete preparata per Kubernetes utilizzando l'API Kubernetes.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Attiva l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente
eseguendo
gcloud components update
.
Esamina i requisiti e le limitazioni.
Prepara un VPC aggiuntivo
Google Cloud crea una rete di pod predefinita durante la creazione del cluster associata
con il pool di nodi GKE utilizzato durante la creazione iniziale
cluster GKE. La rete di pod predefinita è disponibile su tutti i cluster
di nodi e pod. Per facilitare le funzionalità di più reti all'interno del pool di nodi,
devi preparare i VPC esistenti o nuovi, che supportano Layer 3
e Device
.
Per preparare un VPC aggiuntivo, considera quanto segue requisiti:
Tipo di rete
Layer 3
eNetdevice
:- Crea un intervallo secondario se utilizzi reti di tipo
Layer 3
. - Assicurati che le dimensioni del CIDR per l'intervallo secondario siano sufficientemente grandi da di nodi nel pool di nodi e il numero di pod per che vuoi avere.
- Analogamente alla rete di pod predefinita, le altre reti di pod utilizzano l'overprovisioning degli indirizzi. L'intervallo di indirizzi IP secondari deve contenere due volte un numero di indirizzi IP per nodo pari al numero di pod per nodo.
- Crea un intervallo secondario se utilizzi reti di tipo
Requisiti di rete di tipo
Device
: crea una subnet normale su in un VPC. Non è necessaria una subnet secondaria.
Per abilitare le funzionalità di più reti nel pool di nodi, devi preparare VPC a cui vuoi stabilire connessioni aggiuntive. Tu puoi utilizzare un VPC esistente o creare un nuovo VPC specificamente per pool di nodi.
Crea una rete VPC che supporti il dispositivo di tipo Layer 3
Per creare una rete VPC che supporti il dispositivo di tipo Layer 3
, procedi nel seguente modo:
le seguenti:
- Assicurati che le dimensioni del CIDR per l'intervallo secondario siano sufficientemente grandi da soddisfare il numero di nodi nel pool di nodi e il numero di pod per nodo che vuoi avere.
Analogamente alla rete di pod predefinita, le altre reti di pod utilizzano l'indirizzo IP l'overprovisioning. L'intervallo di indirizzi IP secondari deve avere il doppio degli indirizzi IP indirizzi IP per nodo come numero di pod per nodo.
gcloud
gcloud compute networks subnets create SUBNET_NAME \
--project=PROJECT_ID \
--range=SUBNET_RANGE \
--network=NETWORK_NAME \
--region=REGION \
--secondary-range=SECONDARY_RANGE_NAME=<SECONDARY_RANGE_RANGE>
Sostituisci quanto segue:
SUBNET_NAME
: il nome della subnet.PROJECT_ID
: l'ID del progetto che contiene la rete VPC in cui viene creata la subnet.SUBNET_RANGE
: l'IPv4 principale per la nuova subnet, con notazione CIDR.NETWORK_NAME
: il nome del VPC che contiene la nuova subnet.REGION
: la regione Google Cloud in creato dalla nuova subnet.SECONDARY_RANGE_NAME
: il nome del intervallo secondario.SECONDARY_IP_RANGE
l'IPv4 secondario di indirizzi IP in notazione CIDR.
Console
Nella console Google Cloud, vai alla pagina Reti VPC.
Fai clic su Crea rete VPC.
Nel campo Nome, inserisci il nome della rete. Ad esempio:
l3-vpc
.Dal menu a discesa Unità massima di trasmissione (MTU), scegli il valore di MTU appropriato.
Nella sezione Modalità creazione subnet, scegli Personalizzata.
Fai clic su AGGIUNGI SUBNET.
Nella sezione Nuova subnet, specifica la seguente configurazione per una subnet:
Specifica un nome. Ad esempio,
l3-subnet
.Seleziona una Regione.
Inserisci un intervallo di indirizzi IP. Questo è l'indirizzo IPv4 principale per la subnet.
Se selezioni un intervallo che non è un indirizzo RFC 1918, verifica che l'intervallo non sia in conflitto con una configurazione esistente. Per ulteriori informazioni per informazioni, consulta Subnet IPv4 più intervalli.
Per definire un intervallo secondario per la subnet, fai clic su Crea IP secondario di indirizzi IP esterni.
Se selezioni un intervallo che non è un indirizzo RFC 1918, verifica che l'intervallo non sia in conflitto con una configurazione esistente. Per ulteriori informazioni per informazioni, consulta Subnet IPv4 più intervalli.
Accesso privato Google: puoi attivare Accesso privato Google per quando la crei o in un secondo momento modificandola.
Log di flusso: puoi abilitare flusso VPC log per la subnet quando la crei in un secondo momento modificandolo.
Fai clic su Fine.
Nella sezione Regole firewall, in Regole firewall IPv4, seleziona zero o più regole firewall predefinite.
Le regole riguardano casi d'uso comuni per la connettività alle istanze. Puoi creare le tue regole firewall dopo aver per creare la rete. Ogni nome della regola predefinita inizia con il nome alla rete VPC che stai creando.
In Regole firewall IPv4, per modificare il firewall in entrata predefinito regola denominata
allow-custom
, fai clic su MODIFICA.Puoi modificare le subnet, aggiungere ulteriori intervalli IPv4 e specificare i protocolli e le porte.
La regola firewall
allow-custom
non viene aggiornata automaticamente se aggiungi da altre subnet in un secondo momento. Se hai bisogno di regole firewall per il nuovo subnet, per aggiungere le regole devi aggiornare la configurazione del firewall.Nella sezione Modalità di routing dinamico, per la rete VPC. Per ulteriori informazioni, vedi Routing dinamico . Puoi modificare le routing dinamico in un secondo momento.
Fai clic su Crea.
Crea una rete VPC che supporti i dispositivi di tipo Netdevice
o DPDK
gcloud
gcloud compute networks subnets create SUBNET_NAME \
--project=PROJECT_ID \
--range=SUBNET_RANGE \
--network=NETWORK_NAME \
--region=REGION \
--secondary-range=SECONDARY_RANGE_NAME=<SECONDARY_RANGE_RANGE>
Sostituisci quanto segue:
SUBNET_NAME
: il nome della subnet.PROJECT_ID
: l'ID del progetto che contiene la rete VPC in cui viene creata la subnet.SUBNET_RANGE
: l'IPv4 principale per la nuova subnet, con notazione CIDR.NETWORK_NAME
: il nome del VPC che contiene la nuova subnet.REGION
: la regione Google Cloud in creato dalla nuova subnet.SECONDARY_RANGE_NAME
: il nome del intervallo secondario.SECONDARY_IP_RANGE
l'IPv4 secondario di indirizzi IP in notazione CIDR.
Console
Nella console Google Cloud, vai alla pagina Reti VPC.
Fai clic su Crea rete VPC.
Nel campo Nome, inserisci il nome della rete. Ad esempio:
netdevice-vpc
odpdk-vpc
.Dal menu a discesa Unità massima di trasmissione (MTU), scegli il valore di MTU appropriato.
Nella sezione Modalità creazione subnet, scegli Personalizzata.
Nella sezione Nuova subnet, specifica la seguente configurazione per una subnet:
Specifica un nome. Ad esempio,
netdevice-subnet
odpdk-vpc
.Seleziona una Regione.
Inserisci un intervallo di indirizzi IP. Questo è l'indirizzo IPv4 principale per la subnet.
Se selezioni un intervallo che non è un indirizzo RFC 1918, verifica che l'intervallo non sia in conflitto con una configurazione esistente. Per ulteriori informazioni per informazioni, consulta Subnet IPv4 più intervalli.
Accesso privato Google: scegli se abilitarlo Accesso privato Google per quando la crei o in un secondo momento modificandola.
Log di flusso: puoi abilitare flusso VPC log per la subnet quando la crei in un secondo momento modificandolo.
Fai clic su Fine.
Nella sezione Regole firewall, in Regole firewall IPv4, seleziona zero o più regole firewall predefinite.
Le regole riguardano casi d'uso comuni per la connettività alle istanze. Puoi creare le tue regole firewall dopo aver per creare la rete. Ogni nome della regola predefinita inizia con il nome alla rete VPC che stai creando.
In Regole firewall IPv4, per modificare il firewall in entrata predefinito regola denominata
allow-custom
, fai clic su MODIFICA.Puoi modificare le subnet, aggiungere ulteriori intervalli IPv4 e specificare i protocolli e le porte.
La regola firewall
allow-custom
non viene aggiornata automaticamente se aggiungi da altre subnet in un secondo momento. Se hai bisogno di regole firewall per il nuovo subnet, per aggiungere le regole devi aggiornare la configurazione del firewall.Nella sezione Modalità di routing dinamico, per la rete VPC. Per ulteriori informazioni, vedi Routing dinamico . Puoi modificare le routing dinamico in un secondo momento.
Fai clic su Crea.
Crea un cluster GKE con funzionalità di più reti
gcloud
Per creare un cluster GKE con funzionalità di più reti:
gcloud container clusters create CLUSTER_NAME \
--cluster-version=CLUSTER_VERSION \
--enable-dataplane-v2 \
--enable-ip-alias \
--enable-multi-networking
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.CLUSTER_VERSION
: la versione del cluster.
Questo comando include i seguenti flag:
--enable-multi-networking:
abilita il networking multiplo della risorsa personalizzata le definizioni (CRD) nel server API per questo cluster ed esegue il deployment network-controller-manager, che contiene la riconciliazione e il ciclo di vita per gli oggetti multi-rete.--enable-dataplane-v2:
abilita GKE Dataplane V2. Questo flag è obbligatorio per abilitare più reti.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Fai clic su add_box Crea.
Configura il cluster Standard. Per ulteriori informazioni, consulta la sezione Creare a livello di zona cluster o Crea una regione cluster. Durante la creazione del cluster, seleziona la subnet di rete e quella del nodo appropriata.
Nel riquadro di navigazione, in Cluster, fai clic su Networking.
Seleziona la casella di controllo Abilita Dataplane V2.
Seleziona Attiva reti multiple.
Fai clic su Crea.
L'abilitazione del networking multiplo per un cluster aggiunge il necessario CustomResourceDefinitions (CRD) al server API per quel cluster. Inoltre, esegue il deployment di un network-controller-manager, responsabile della riconciliazione per la gestione di oggetti multi-rete. Non puoi modificare la configurazione del cluster dopo la sua creazione.
Crea un pool di nodi GKE connesso a VPC aggiuntivi
Crea un pool di nodi che include i nodi connessi alla rete di nodi (VPC e subnet) e rete di pod (intervallo secondario) creati in Crea rete di pod.
Creare il nuovo pool di nodi e associarlo alle reti aggiuntive in il cluster GKE:
gcloud
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--additional-node-network network=NETWORK_NAME,subnetwork=SUBNET_NAME \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=POD_IP_RANGE,max-pods-per-node=NUMBER_OF_PODS \
--additional-node-network network=highperformance,subnetwork=subnet-highperf
Sostituisci quanto segue:
POOL_NAME
con il nome del nuovo pool di nodi.CLUSTER_NAME
con il nome del cluster esistente a cui aggiungi il pool di nodi.NETWORK_NAME
con il nome della rete da collegare dai nodi del pool di nodi.SUBNET_NAME
con il nome della subnet all'interno della da utilizzare per i nodi.POD_IP_RANGE
l'intervallo di indirizzi IP del pod all'interno della subnet.NUMBER_OF_PODS
numero massimo di pod per nodo.
Questo comando contiene i seguenti flag:
--additional-node-network
: definisce i dettagli della rete aggiuntiva a riga di comando, rete e subnet. Viene utilizzato per specificare per la connessione ai nodi del pool di nodi. Specifica questo parametro quando vuoi connetterti a un altro VPC. In caso contrario specificare questo parametro, il VPC predefinito associato in un cluster Kubernetes. Per le reti di tipoLayer 3
, specifica il Flagadditional-pod-network
che definisce la rete di pod esposta all'interno del cluster GKE come oggettoNetwork
. Quando si utilizza il flag--additional-node-network
, devi fornire una rete e come parametri obbligatori. Assicurati di separare la rete e i valori della subnet con una virgola ed evita di utilizzare spazi.--additional-pod-network
: specifica i dettagli dell'intervallo secondario da utilizzare per la rete di pod. Questo parametro non è obbligatorio se utilizzi un parametro Rete di tipoDevice
. Questo argomento specifica i seguenti valori chiave:subnetwork
,pod-ipv4-range
emax-pods-per-node
. Quando utilizzi il--additional-pod-network
, devi fornire ipod-ipv4-range
emax-pods-per-node
valori, separati da virgole e senza spazi.subnetwork
: collega la rete di nodi alla rete di pod. La subnet è facoltativo. Se non lo specifichi, la rete di pod aggiuntiva associati alla subnet predefinita fornita durante la creazione del cluster.--max-pods-per-node
: il campomax-pods-per-node
deve essere specificato e ha con una potenza di 2. Il valore minimo è 4. L'max-pods-per-node
deve non sia superiore al valoremax-pods-per-node
nel pool di nodi.
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Nel riquadro di navigazione, fai clic su Cluster.
Nella sezione Cluster Kubernetes, fai clic sul cluster che hai creato.
Nella parte superiore della pagina, per creare il tuo pool di nodi, fai clic su add_box Aggiungi pool di nodi.
Nella sezione Dettagli del pool di nodi, completa quanto segue:
- Inserisci un Nome per il pool di nodi.
- Inserisci il Numero di nodi da creare nel pool di nodi.
Nel riquadro di navigazione, in Pool di nodi, fai clic su Nodi.
Nell'elenco a discesa Tipo di immagine, seleziona la Container-Optimized OS con immagine del nodo containerd (cos_containerd).
Quando crei una VM, selezioni un tipo di macchina da una famiglia di macchine che determina le risorse disponibili per quella VM. Ad esempio, un tipo di macchina come
e2-standard-4
contiene 4 vCPU, pertanto può supportare fino a 4 VPC totali. Puoi scegliere tra diverse famiglie di macchine, ciascuna è ulteriormente organizzata in serie di macchine, mentre tipi di macchine personalizzate all'interno di ogni serie. Ogni tipo di macchina viene fatturato in modo diverso. Per ulteriori informazioni, consulta il listino prezzi dei tipi di macchina.Dal riquadro di navigazione, seleziona Networking.
Nella sezione Networking di nodi, specifica il numero massimo di pod per nodo. La sezione Reti di nodi mostra la rete VPC utilizzata per creare in un cluster Kubernetes. È necessario designare reti di nodi aggiuntive correlate reti VPC e tipi di dispositivi stabiliti in precedenza.
Crea associazione del pool di nodi:
- Per il dispositivo di tipo
Layer 3
:- Nella sezione Reti di nodi, fai clic su AGGIUNGI UNA RETE DI NODI.
- Dall'elenco a discesa di rete, seleziona il VPC che supporta un dispositivo di tipo Livello 3.
- Seleziona la subnet creata per il VPC
Layer 3
. - Nella sezione Intervalli di indirizzi IP del pod alias, fai clic su Aggiungi intervallo di indirizzi IP del pod.
- Seleziona la Subnet secondaria e indica il Numero massimo di pod per nodo.
- Seleziona Done (Fine).
- Per i dispositivi di tipo
Netdevice
eDPDK
:- Nella sezione Reti di nodi, fai clic su AGGIUNGI UNA RETE DI NODI.
- Dall'elenco a discesa di rete, seleziona il VPC che supporta i dispositivi di tipo
Netdevice
oDPDK
. - Seleziona la subnet creata per il VPC
Netdevice
oDPDK
. - Seleziona Done (Fine).
- Per il dispositivo di tipo
Fai clic su Crea.
Note:
- Se all'interno dello stesso vengono specificate più reti di pod aggiuntive nodo-rete, devono trovarsi nella stessa subnet.
- Non puoi fare riferimento più volte allo stesso intervallo secondario di una subnet.
Esempio
L'esempio seguente crea un pool di nodi denominato pool-multi-net che collega due
reti aggiuntive ai nodi, Datapalane (rete di tipo Layer 3
) e
ad alte prestazioni (rete di tipo netdevice). Questo esempio presuppone che tu abbia già
ha creato un cluster GKE denominato cluster-1
:
gcloud container node-pools create pool-multi-net \
--project my-project \
--cluster cluster-1 \
--zone us-central1-c \
--additional-node-network network=dataplane,subnetwork=subnet-dp \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-blue,max-pods-per-node=8 \
--additional-node-network network=highperformance,subnetwork=subnet-highperf
Per specificare interfacce aggiuntive per la rete di nodi e la rete di pod, definisci
Parametri --additional-node-network
e --additional-pod-network
più volte, come illustrato nell'esempio seguente:
--additional-node-network network=dataplane,subnetwork=subnet-dp \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-blue,max-pods-per-node=8 \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-green,max-pods-per-node=8 \
--additional-node-network network=managementdataplane,subnetwork=subnet-mp \
--additional-pod-network subnetwork=subnet-mp,pod-ipv4-range=sec-range-red,max-pods-per-node=4
specificare altre reti di pod direttamente sul VPC principale del pool di nodi, come mostrato nell'esempio seguente:
--additional-pod-network subnetwork=subnet-def,pod-ipv4-range=sec-range-multinet,max-pods-per-node=8
Crea rete di pod
Definire le reti di pod a cui i pod accederanno definendo gli oggetti Kubernetes e il collegamento alle risorse Compute Engine corrispondenti, come VPC, subnet e intervalli secondari.
Per creare una rete di pod, devi definire gli oggetti CRD di rete nel cluster.
Configura la rete VPC Layer 3
YAML
Per il VPC Layer 3
, crea Network
e GKENetworkParamSet
oggetti:
Salva il seguente manifest di esempio come
blue-network.yaml
:apiVersion: networking.gke.io/v1 kind: Network metadata: name: blue-network spec: type: "L3" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: "l3-vpc"
Il manifest definisce una risorsa
Network
denominatablue-network
del tipoLayer 3
. L'oggettoNetwork
fa riferimento all'oggettoGKENetworkParamSet
denominatol3-vpc
, che associa una rete alle risorse Compute Engine.Applica il manifest al cluster:
kubectl apply -f blue-network.yaml
Salva il seguente manifest come
dataplane.yaml
:apiVersion: networking.gke.io/v1 kind: GKENetworkParamSet metadata: name: "l3-vpc" spec: vpc: "l3-vpc" vpcSubnet: "subnet-dp" podIPv4Ranges: rangeNames: - "sec-range-blue"
Questo manifest definisce l'oggetto
GKENetworkParamSet
denominatodataplane
, imposta il nome VPC comedataplane
, il nome della subnet comesubnet-dp
e di indirizzi IPv4 secondari per i pod denominatosec-range-blue
.Applica il manifest al cluster:
kubectl apply -f dataplane.yaml
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Dal riquadro di navigazione, fai clic su Network Function Optimizer (Ottimizzatore delle funzioni di rete).
Fai clic su Abilita GKE Enterprise.
Nella parte superiore della pagina, fai clic su add_box. Crea per creare la tua rete di pod.
Nella sezione Prima di iniziare, verifica i dettagli.
Fai clic su SUCCESSIVO: POSIZIONE RETE POD.
Nella sezione Località della rete di pod, dall'elenco a discesa Cluster, seleziona il cluster GKE con networking multiplo GKE Dataplane V2 abilitato.
Fai clic su SUCCESSIVO: RIFERIMENTO DELLA RETE VPC.
Nella sezione Riferimento rete VPC, dal Riferimento rete VPC seleziona la rete VPC utilizzata per
Layer 3
pod con più NIC.Fai clic su SUCCESSIVO: TIPO DI RETE POD.
Nella sezione Tipo di rete pod, seleziona L3 e inserisci il pod nome della rete.
Fai clic su SUCCESSIVO: INTERVALLO SECONDARIO DELLA RETE POD.
Nella sezione Intervallo secondario della rete di pod, inserisci il campo Secondario intervallo.
Fai clic su SUCCESSIVO: ROUTE DI RETE POD.
Nella sezione Route della rete di pod, seleziona AGGIUNGI ROUTE per definire le route personalizzate.
Fai clic su CREA RETE POD.
Configura rete DPDK
YAML
Per il VPC DPDK, crea oggetti Network
e GKENetworkParamSet
.
Salva il seguente manifest di esempio come
dpdk-network.yaml
:apiVersion: networking.gke.io/v1 kind: Network metadata: name: dpdk-network spec: type: "Device" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: "dpdk"
Questo manifest definisce una risorsa
Network
denominatadpdk-network
con un tipoDevice
. La risorsaNetwork
fa riferimento a un oggettoGKENetworkParamSet
denominatodpdk
per la sua configurazione.Applica il manifest al cluster:
kubectl apply -f dpdk-network.yaml
Per l'oggetto
GKENetworkParamSet
, salva il seguente manifest comedpdk.yaml
:apiVersion: networking.gke.io/v1 kind: GKENetworkParamSet metadata: name: "dpdk" spec: vpc: "dpdk" vpcSubnet: "subnet-dpdk" deviceMode: "DPDK-VFIO"
Questo manifest definisce l'oggetto
GKENetworkParamSet
denominatodpdk
, imposta la Nome VPC comedpdk
, nome subnet comesubnet-dpdk
e deviceMode nome comeDPDK-VFIO
.Applica il manifest al cluster:
kubectl apply -f dpdk-network.yaml
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Dal riquadro di navigazione, fai clic su Network Function Optimizer (Ottimizzatore delle funzioni di rete).
Nella parte superiore della pagina, fai clic su add_box. Crea per creare la tua rete di pod.
Nella sezione Prima di iniziare, verifica i dettagli.
Fai clic su SUCCESSIVO: POSIZIONE RETE POD.
Nella sezione Località della rete di pod, dall'elenco a discesa Cluster, seleziona il cluster GKE con networking multiplo GKE Dataplane V2 abilitato.
Fai clic su SUCCESSIVO: RIFERIMENTO DELLA RETE VPC.
Nella sezione Riferimento rete VPC, dal Riferimento rete VPC seleziona la rete VPC utilizzata per i pod dpdk multinic.
Fai clic su SUCCESSIVO: TIPO DI RETE POD.
Nella sezione Tipo di rete di pod, seleziona DPDK-VFIO (dispositivo) e inserisci il Nome della rete di pod.
Fai clic su SUCCESSIVO: INTERVALLO SECONDARIO DELLA RETE POD. La sezione dell'intervallo secondario della rete di pod non sarà disponibile
Fai clic su SUCCESSIVO: ROUTE DI RETE POD. Nella sezione Route della rete di pod, seleziona AGGIUNGI ROUTE per definire route personalizzate
Fai clic su CREA RETE POD.
Configura rete netdevice
Per il VPC netdevice
, crea Network
e GKENetworkParamSet
di oggetti strutturati.
YAML
Salva il seguente manifest di esempio come
netdevice-network.yaml
:apiVersion: networking.gke.io/v1 kind: Network metadata: name: netdevice-network spec: type: "Device" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: "netdevice"
Questo manifest definisce una risorsa
Network
denominatanetdevice-network
con un tipo diDevice
. Fa riferimento all'oggettoGKENetworkParamSet
denominatonetdevice
.Applica il manifest al cluster:
kubectl apply -f netdevice-network.yaml
Salva il seguente manifest come
netdevice.yaml
:apiVersion: networking.gke.io/v1 kind: GKENetworkParamSet metadata: name: netdevice spec: vpc: netdevice vpcSubnet: subnet-netdevice deviceMode: NetDevice
Questo manifest definisce una risorsa
GKENetworkParamSet
denominatanetdevice
, imposta il nome della VPC comenetdevice
, il nome della subnet comesubnet-netdevice
, e specifica la modalità del dispositivo comeNetDevice
.Applica il manifest al cluster:
kubectl apply -f netdevice.yaml
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Dal riquadro di navigazione, fai clic su Network Function Optimizer (Ottimizzatore delle funzioni di rete).
Nella parte superiore della pagina, fai clic su add_box. Crea per creare la tua rete di pod.
Nella sezione Prima di iniziare, verifica i dettagli.
Fai clic su SUCCESSIVO: POSIZIONE RETE POD.
Nella sezione Località della rete di pod, dall'elenco a discesa Cluster, seleziona il cluster GKE con networking multiplo GKE Dataplane V2 abilitato.
Fai clic su SUCCESSIVO: RIFERIMENTO DELLA RETE VPC.
Nella sezione Riferimento rete VPC, dal Riferimento rete VPC seleziona la rete VPC utilizzata per i pod netdevice multinic.
Fai clic su SUCCESSIVO: TIPO DI RETE POD.
Nella sezione Tipo di rete di pod, seleziona NetDevice (Device) e inserisci il Nome della rete di pod.
Fai clic su SUCCESSIVO: INTERVALLO SECONDARIO DELLA RETE POD. La sezione dell'intervallo secondario della rete di pod non sarà disponibile
Fai clic su SUCCESSIVO: ROUTE DI RETE POD. Nella sezione Route della rete di pod, seleziona AGGIUNGI ROUTE per definire route personalizzate.
Fai clic su CREA RETE POD.
Configurazione delle route di rete
La configurazione della route di rete consente di definire route personalizzate per una specifica configurati sui pod per indirizzare il traffico alla rete all'interno del pod.
YAML
Salva il seguente manifest come
red-network.yaml
:apiVersion: networking.gke.io/v1 kind: Network metadata: name: red-network spec: type: "L3" parametersRef: group: networking.gke.io kind: GKENetworkParamSet name: "management" routes: - to: "10.0.2.0/28"
Questo manifest definisce una risorsa di rete denominata
red-network
con un tipoLayer 3
e route personalizzata "10.0.2.0/28" attraverso l'interfaccia di rete.Applica il manifest al cluster:
kubectl apply -f red-network.yaml
Console
Vai alla pagina Google Kubernetes Engine nella console Google Cloud.
Fai clic su add_box Crea.
Dal riquadro di navigazione, fai clic su Network Function Optimizer (Ottimizzatore delle funzioni di rete).
Nella sezione Cluster Kubernetes, fai clic sul cluster che hai creato.
Nella parte superiore della pagina, fai clic su add_box Crea per creare la tua rete di pod.
Nella sezione Route della rete di pod, definisci le route personalizzate.
Fai clic su CREA RETE POD.
Fai riferimento al Network
preparato
Nella configurazione del carico di lavoro, fai riferimento all'oggetto Kubernetes Network
preparato
utilizzando l'API Kubernetes.
Connetti il pod a reti specifiche
Per connettere i pod alle reti specificate, devi includere i nomi dei pod
Network
oggetti come annotazioni all'interno della configurazione del pod. Assicurati di
includi sia default
Network
sia le reti aggiuntive selezionate nell'
annotazioni per stabilire le connessioni.
Salva il seguente manifest di esempio come
sample-l3-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: sample-l3-pod annotations: networking.gke.io/default-interface: 'eth0' networking.gke.io/interfaces: | [ {"interfaceName":"eth0","network":"default"}, {"interfaceName":"eth1","network":"l3-network"} ] spec: containers: - name: sample-l3-pod image: busybox command: ["sleep", "10m"] ports: - containerPort: 80 restartPolicy: Always
Questo manifest crea un pod denominato
sample-l3-pod
con due interfacce di rete,eth0
eeth1
, associati adefault
eblue-network
rispettivamente sulle reti.Applica il manifest al cluster:
kubectl apply -f sample-l3-pod.yaml
Connetti il pod a più reti
Salva il seguente manifest di esempio come
sample-l3-netdevice-pod.yaml
:apiVersion: v1 kind: Pod metadata: name: sample-l3-netdevice-pod annotations: networking.gke.io/default-interface: 'eth0' networking.gke.io/interfaces: | [ {"interfaceName":"eth0","network":"default"}, {"interfaceName":"eth1","network":"l3-network"}, {"interfaceName":"eth2","network":"netdevice-network"} ] spec: containers: - name: sample-l3-netdevice-pod image: busybox command: ["sleep", "10m"] ports: - containerPort: 80 restartPolicy: Always
Questo manifest crea un pod denominato
sample-l3-netdevice-pod
con tre reti interfacce,eth0
,eth1
eeth2
associate adefault
,l3-network
, enetdevice
, rispettivamente.Applica il manifest al cluster:
kubectl apply -f sample-l3-netdevice-pod.yaml
Puoi utilizzare la stessa annotazione in qualsiasi ReplicaSet (Deployment o DaemonSet) nella sezione di annotazione del modello.
Quando crei un pod con una specifica su più reti, il piano dati
generano automaticamente la configurazione delle interfacce del pod e
alle RP di NetworkInterface
. Crea una RP NetworkInterface
per ciascuna
Network
non predefinito specificato nella specifica del pod.
Ad esempio, il seguente file manifest mostra i dettagli di un file manifest NetworkInterface
:
apiVersion: v1
items:
- apiVersion: networking.gke.io/v1
kind: NetworkInterface
metadata:
labels:
podName: samplepod
name: "samplepod-c0b60cbe"
namespace: default
spec:
networkName: "blue-network"
status:
gateway4: 172.16.1.1
ipAddresses:
- 172.16.1.2/32
macAddress: 82:89:96:0b:92:54
podName: samplepod
Questo manifest include il nome della rete, l'indirizzo del gateway, gli indirizzi IP assegnati, l'indirizzo MAC e il nome del pod.
Configurazione di esempio di un pod con più interfacce:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default
link/ether 2a:92:4a:e5:da:35 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.60.45.4/24 brd 10.60.45.255 scope global eth0
valid_lft forever preferred_lft forever
10: eth1@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default qlen 1000
link/ether ba:f0:4d:eb:e8:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.16.1.2/32 scope global eth1
valid_lft forever preferred_lft forever
Verifica
- Assicurati di creare cluster con
--enable-multi-networking
solo se--enable-dataplane-v2
abilitato. - Verifica che tutti i pool di nodi nel cluster siano in esecuzione Immagini di Container-Optimized OS al momento del cluster e del nodo la creazione di pool.
- Verifica che i pool di nodi vengano creati con
--additional-node-network
o--additional-pod-network
solo se il networking multiplo è abilitato sulla in un cluster Kubernetes. - Assicurati che la stessa subnet non sia specificata due volte
--additional-node-network
a un pool di nodi. - Verifica che non sia specificato lo stesso intervallo secondario
--additional-pod-network
a un pool di nodi. - Segui i limiti di scalabilità specificati per gli oggetti di rete, considerando di nodi, pod e indirizzi IP consentiti.
- Verifica che sia presente un solo oggetto
GKENetworkParamSet
che fa riferimento a un una specifica subnet e un intervallo secondario. - Verifica che ogni oggetto di rete faccia riferimento a un diverso
GKENetworkParamSet
. - Verifica che l'oggetto di rete sia creato con una subnet specifica
Rete
Device
non in uso sullo stesso nodo con un'altra rete con un intervallo secondario. Puoi convalidare questa impostazione solo in fase di runtime. - Verifica che i vari intervalli secondari assegnati ai pool di nodi non che hanno indirizzi IP sovrapposti.
Risolvi i problemi dei parametri di networking multiplo in GKE
Quando crei un cluster e un pool di nodi, Google Cloud implementa determinati controlli per garantire che siano consentiti solo parametri di networking multiplo validi. Ciò garantisce che la rete sia configurata correttamente per il cluster.
Se non riesci a creare carichi di lavoro su più reti, puoi controllare lo stato del pod e eventi per ulteriori informazioni:
kubectl describe pods samplepod
L'output è simile al seguente:
Name: samplepod
Namespace: default
Status: Running
IP: 192.168.6.130
IPs:
IP: 192.168.6.130
...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 26m default-scheduler Successfully assigned default/samplepod to node-n1-04
Warning FailedCreatePodSandBox 26m kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "e16c58a443ab70d671159509e36894b57493300ea21b6c24c14bdc412b0fdbe6": Unable to create endpoint: [PUT /endpoint/{id}][400] putEndpointIdInvalid failed getting interface and network CR for pod "default/samplepod": failed creating interface CR default/samplepod-c0b60cbe: admission webhook "vnetworkinterface.networking.gke.io" denied the request: NetworkInterface.networking.gke.io "samplepod-c0b60cbe" is invalid: Spec.NetworkName: Internal error: failed to get the referenced network "sample-network": Network.networking.gke.io "sample-network" not found
...
Di seguito sono riportati i motivi generali dell'errore di creazione del pod:
- Impossibile pianificare il pod a causa di requisiti delle risorse di networking multiplo non soddisfatti
- Impossibile identificare le reti specificate
- Impossibile configurare e creare l'oggetto dell'interfaccia di rete per il pod
Per verificare se Google Cloud ha creato gli oggetti NetworkInterface
in
API server, esegui questo comando:
kubectl get networkinterfaces.networking.gke.io -l podName=samplepod
Risolvi i problemi relativi alla creazione di reti Kubernetes
Dopo aver creato correttamente una rete, i nodi che devono avere accesso sulla rete configurata sono annotate con un'annotazione relativa allo stato della rete.
Per osservare le annotazioni, esegui questo comando:
kubectl describe node NODE_NAME
Sostituisci NODE_NAME
con il nome del nodo.
L'output è simile al seguente:
networking.gke.io/network-status: [{"name":"default"},{"name":"dp-network"}]
L'output elenca ogni rete disponibile sul nodo. Se il valore previsto non sia visibile sul nodo, procedi nel seguente modo:
Verifica se il nodo può accedere alla rete
Se la rete non viene visualizzata nell'annotazione relativa allo stato della rete del nodo:
- Verifica che il nodo faccia parte di un pool configurato per il networking multiplo.
- Controlla le interfacce del nodo per vedere se ha un'interfaccia per la rete che stai configurando.
- Se un nodo non è nello stato di rete e ha una sola interfaccia di rete, deve comunque creare un pool di nodi con il networking multiplo abilitato.
- Se il nodo contiene l'interfaccia della rete che stai configurando, ma
non è indicato nell'annotazione relativa allo stato della rete, controlla
Network
eGKENetworkParamSet
(GNP).
Controlla le risorse Network
e GKENetworkParamSet
Lo stato delle risorse Network
e GKENetworkParamSet
(GNP) include un
delle condizioni per segnalare gli errori di configurazione. Ti consigliamo di controllare il GNP
perché non si basa su un'altra risorsa per essere valida.
Per esaminare il campo delle condizioni, esegui questo comando:
kubectl get gkenetworkparamsets GNP_NAME -o yaml
Sostituisci GNP_NAME
con il nome del
GKENetworkParamSet
risorsa.
Quando la condizione Ready
è uguale a true, la configurazione è valida e
è simile al seguente:
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
...
spec:
podIPv4Ranges:
rangeNames:
- sec-range-blue
vpc: dataplane
vpcSubnet: subnet-dp
status:
conditions:
- lastTransitionTime: "2023-06-26T17:38:04Z"
message: ""
reason: GNPReady
status: "True"
type: Ready
networkName: dp-network
podCIDRs:
cidrBlocks:
- 172.16.1.0/24
Quando la condizione Ready
è uguale a false, l'output mostra il motivo e
è simile al seguente:
apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
...
spec:
podIPv4Ranges:
rangeNames:
- sec-range-blue
vpc: dataplane
vpcSubnet: subnet-nonexist
status:
conditions:
- lastTransitionTime: "2023-06-26T17:37:57Z"
message: 'subnet: subnet-nonexist not found in VPC: dataplane'
reason: SubnetNotFound
status: "False"
type: Ready
networkName: ""
Se viene visualizzato un messaggio simile, assicurati che GNP sia stato configurato correttamente. Se verifica che la configurazione della rete Google Cloud sia corretta. Dopo il giorno aggiornare la configurazione di rete di Google Cloud, potresti dover ricreare per attivare manualmente una risincronizzazione. Ciò per evitare il polling infinito dei Google Cloud tramite Google Cloud CLI o tramite l'API Compute Engine.
Quando GNP è pronto, controlla la risorsa Network
.
kubectl get networks NETWORK_NAME -o yaml
Sostituisci NETWORK_NAME
con il nome del Network
risorsa.
L'output di una configurazione valida è simile al seguente:
apiVersion: networking.gke.io/v1
kind: Network
...
spec:
parametersRef:
group: networking.gke.io
kind: GKENetworkParamSet
name: dp-gnp
type: L3
status:
conditions:
- lastTransitionTime: "2023-06-07T19:31:42Z"
message: ""
reason: GNPParamsReady
status: "True"
type: ParamsReady
- lastTransitionTime: "2023-06-07T19:31:51Z"
message: ""
reason: NetworkReady
status: "True"
type: Ready
reason: NetworkReady
indica che la risorsa di rete è configurata in modo corretto.reason: NetworkReady
non implica che la risorsa di rete sono necessariamente disponibili su un nodo specifico o in uso.- In caso di errori di configurazione o di errori, il campo
reason
nella condizione specifica la causa esatta del problema. In questi casi, modifica configurazione di conseguenza. - GKE compila il campo ParamsReady, se il parametro parameterRef
è impostato su una risorsa
GKENetworkParamSet
esistente nel cluster. Se hai specificato un parametro di tipoGKENetworkParamSet
Parameter Ref e il parametro condizione non viene visualizzata, assicurati che nome, tipo e gruppo corrispondano a GNP esistente all'interno del cluster.