Questo documento è rivolto ad amministratori IT, operatori e specialisti di reti che utilizzano Google Distributed Cloud. Questo documento mostra creare e utilizzare reti virtuali per supportare carichi di lavoro VM che utilizzano Runtime VM su GDC. Per scoprire di più sui ruoli comuni ed esempi a cui facciamo riferimento nei contenuti di Google Cloud, Ruoli e attività utente comuni di GKE Enterprise.
Prima di iniziare
Per completare questo documento, devi disporre dell'accesso alle seguenti risorse:
- Accesso al cluster Google Distributed Cloud versione 1.12.0 (
anthosBareMetalVersion: 1.12.0
) o successiva. Puoi utilizzare qualsiasi tipo di cluster in grado di eseguire carichi di lavoro. Se necessario, prova Google Distributed Cloud su Compute Engine o consulta la panoramica della creazione dei cluster. - Lo strumento client
virtctl
installato come plug-in perkubectl
. Se necessario, installa lo strumento client virtctl.
Panoramica delle reti virtuali
Le reti vengono create utilizzando risorse personalizzate. Una rete può essere creata in qualsiasi momento dopo la creazione del cluster. Le impostazioni di rete per l'interfaccia host e l'assegnazione dell'ID VLAN, se definita, non possono essere modificate dopo aver creato una rete.
L'eliminazione delle reti è soggetta ad alcune condizioni. Ad esempio, il controller di rete rifiuta l'eliminazione di una rete quando è in uso come VM o interfacce di rete.
La definizione della rete può includere il gateway, le route e le informazioni DNS. Puoi anche abilitare l'utilizzo di un server DHCP esterno. Queste impostazioni di rete vengono assegnate in modo statico o dinamico a seconda di come sono definite alcune opzioni di configurazione di rete.
Rete pod predefinita
Per ogni cluster viene creata una pod-network
per impostazione predefinita. Questa rete non può essere modificata. Le route per il CIDR del pod e del servizio e la configurazione DNS vengono compilate automaticamente. La configurazione DNS utilizza gli stessi valori del parametro
in un cluster Kubernetes.
pod-network
può essere utilizzato dai carichi di lavoro che richiedono un'interfaccia per accedere alla rete del pod del cluster e non richiedono opzioni di configurazione specifiche.
Le route del pod-network
sono sempre configurate per garantire l'accesso al cluster e ai servizi per i carichi di lavoro, anche se il gateway predefinito non è nell'interfaccia pod-network
.
Questo valore predefinito pod-network
ti consente di testare il runtime della VM su GDC senza
passaggi aggiuntivi per creare le tue reti virtuali. Molti dei nostri documenti utilizzano
il valore predefinito pod-network
per ridurre la complessità degli esempi. Le esigenze di
i tuoi carichi di lavoro VM determinano se questo pod-network
predefinito è sufficiente o se
devi creare e usare le tue reti virtuali.
Il seguente manifest YAML mostra una configurazione di esempio per pod-network
.
I valori per le route, il DNS e il nome dell'interfaccia sono stati compilati dalla
cluster:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: pod-network
spec:
routes:
- to: 192.168.0.0/16
- to: 10.96.0.0/12
dnsConfig:
nameservers:
- 10.96.0.10
Creare e utilizzare reti virtuali
Per supportare i carichi di lavoro di produzione, crea reti che supportino le funzionalità di cui hai bisogno, ad esempio l'utilizzo di un server DHCP esterno o di un ID VLAN. Questi forniscono una connettività di livello 2 (L2) per le tue VM.
Utilizza un server DHCP esterno
Il runtime VM su GDC non fornisce server DHCP. Devi specificare manualmente gli indirizzi IP per le VM o configurare l'utilizzo di server DHCP esterni. Quando si abilita l'utilizzo di un server DHCP esterno, si può saltare la configurazione e le impostazioni del gateway, se fornite da DHCP.
Per creare una rete che utilizza un server DHCP esterno, completa le operazioni seguenti passaggi:
Crea un manifest
Network
, ad esempiouse-dhcp-network.yaml
, nell'editor di tua scelta:nano use-dhcp-network.yaml
Copia e incolla il seguente manifest YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
Sostituisci i seguenti valori:
NETWORK_NAME
: il nome della tua rete.INTERFACE_NAME
: il nome dell'interfaccia nella Nodo Google Distributed Cloud a cui collegare la rete. Specifica il nome del un'interfaccia fisica sul nodo. Tutti i nodi nel tuo cluster con lo stesso nome di interfaccia.
In questo manifest
Network
, sono impostati i seguenti valori:type
impostata suL2
. Con questa impostazione, i carichi di lavoro possono avere solo Collegamento di livello 2 a questa rete. Questa è l'unica retetype
che puoi creare nel runtime VM su GDC.- L'opzione
externalDHCP4
è impostata sutrue
. Questa impostazione abilita il protocollo DHCP esterno in rete. Il server DHCP esterno è responsabile dell'indirizzo IPv4 allocazione, route, gateway e configurazione DNS per i carichi di lavoro connessi a questa rete.
Salva e chiudi il file manifest
Network
nell'editor.Crea la rete utilizzando
kubectl
:kubectl apply -f use-dhcp-network.yaml
Definisci manualmente le impostazioni di rete
Il runtime VM su GDC non fornisce server DHCP. Devi specificare manualmente gli indirizzi IP per le VM o configurare l'utilizzo di server DHCP esterni. Se devi specificare manualmente gli indirizzi IP, devi definire le impostazioni di rete per il DNS, route e gateway predefinito.
Per creare una rete con impostazioni di rete specificate manualmente per le VM, completa i seguenti passaggi:
Crea un file manifest
Network
, ad esempiomanual-network.yaml
, nell'editor scelto:nano manual-network.yaml
Copia e incolla il seguente manifest YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME routes: - to: "ROUTE_ADDRESS" gateway4: GATEWAY_ADDRESS dnsConfig: nameservers: - NAMESERVER_ADDRESS
Sostituisci i seguenti valori:
NETWORK_NAME
: il nome della tua rete.INTERFACE_NAME
: il nome dell'interfaccia sul node Google Distributed Cloud a cui collegare la rete. Specifica il nome del un'interfaccia fisica sul nodo. Tutti i nodi nel tuo cluster con lo stesso nome di interfaccia.ROUTE_ADDRESS
: route facoltative in notazione CIDR verso e configurarle su ogni VM connessa a questa rete.GATEWAY_ADDRESS
: l'indirizzo IP gateway per le tue VM per gli utilizzi odierni.NAMESERVER_ADDRESS
: uno o più indirizzi IP dei server dei nomi DNS da utilizzare per le VM.
Salva e chiudi il manifest
Network
nell'editor.Crea la rete utilizzando
kubectl
:kubectl apply -f manual-network.yaml
Utilizza un ID VLAN
Quando crei reti virtuali, puoi definire VLAN con tag. Queste assegnazioni VLAN ti aiutano a isolare il traffico di rete in base ai requisiti e alle esigenze di isolamento del tuo carico di lavoro. In una rete AnthosManaged
, il cluster dispone dell'autorizzazione
per creare ed eliminare l'interfaccia VLAN su ogni nodo.
Per creare una rete che definisce un'assegnazione VLAN, completa i seguenti passaggi passaggi:
Crea un file manifest
Network
, ad esempiovlan-network.yaml
, nell'editor scelto:nano vlan-network.yaml
Copia e incolla il seguente manifest YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 networkLifecycle: AnthosManaged l2NetworkConfig: vlanID: VLAN_ID nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
Sostituisci i seguenti valori:
NETWORK_NAME
: il nome della tua rete.INTERFACE_NAME
: il nome dell'interfaccia nella Nodo Google Distributed Cloud a cui collegare la rete. Specifica il nome del un'interfaccia fisica sul nodo. Tutti i nodi nel cluster devono avere lo stesso nome dell'interfaccia.VLAN_ID
: l'ID VLAN per cui vuoi taggare il traffico.
In questo manifest
Network
, sono impostati i seguenti valori:- I carichi di lavoro possono avere solo un collegamento
L2
a questa rete. - La rete è
AnthosManaged
. Questa impostazione è il ciclo di vita predefinito se non viene specificata.- In questa modalità, il cluster ha l'autorizzazione per creare ed eliminare l'interfaccia VLAN su ogni nodo, ad esempio
INTERFACE_NAME.VLAN_ID
. - Se vuoi creare o hai già creato le interfacce VLAN sui nodi, imposta il valore
networkLifecycle
suUserManaged
come mostrato nella sezione successiva.
- In questa modalità, il cluster ha l'autorizzazione per creare ed eliminare l'interfaccia VLAN su ogni nodo, ad esempio
- Sulla rete è abilitato un DHCP esterno. Il server DHCP esterno è responsabile dell'allocazione degli indirizzi IPv4, delle route, del gateway e della configurazione DNS per i carichi di lavoro connessi a questa rete.
Salva e chiudi il file manifest
Network
nell'editor.Crea la rete utilizzando
kubectl
:kubectl apply -f vlan-network.yaml
Crea una rete gestita dall'utente
Nell'esempio seguente, la rete virtuale è gestita dall'utente, invece di Anthos-managed in un esempio precedente. Nelle reti gestite dall'utente, è tua responsabilità creare o eliminare l'interfaccia VLAN sull'host.
Per creare una rete in una modalità gestita dall'utente e definire manualmente la configurazione dell'interfaccia VLAN, completa i seguenti passaggi:
Crea un manifest
Network
, ad esempiouser-managed-network.yaml
, nella un editor di tua scelta:nano user-managed-network.yaml
Copia e incolla la seguente definizione YAML:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 networkLifecycle: UserManaged l2NetworkConfig: vlanID: VLAN_ID nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: true
Sostituisci i seguenti valori:
NETWORK_NAME
: il nome della rete.INTERFACE_NAME
: l'interfaccia host a cui collegare la rete.VLAN_ID
: l'ID VLAN per cui vuoi taggare il traffico.
In questo manifest
Network
, sono impostati i seguenti valori:- I carichi di lavoro possono avere un solo allegato
L2
a questa rete. - La rete è
UserManaged
. Devi creare o eliminare la VLAN InterfacciaVLAN_ID
su ogni nodo prima la rete viene creata o dopo averla eliminata. - Sulla rete è abilitato un DHCP esterno. Il server DHCP esterno responsabile dell'allocazione degli indirizzi IPv4, delle route, del gateway e del DNS per i carichi di lavoro connessi a questa rete.
Salva e chiudi il file manifest
Network
nell'editor.Crea la rete utilizzando
kubectl
:kubectl apply -f user-managed-network.yaml
Connetti una VM a una rete
Le impostazioni di rete per la VM, come DNS e DHCP, vengono assegnate in modo statico o dinamico a seconda di come sono definite determinate opzioni di configurazione di rete:
- Se configuri un indirizzo IP statico sulla VM, non viene inviata alcuna query a un server DHCP. server web. Le informazioni aggiuntive per configurare il gateway e il percorso devono provenire dalla risorsa di rete.
- Se non configuri un indirizzo IP statico sulla VM, viene inviata una query server DHCP. La VM riceve tutte le informazioni dal server DHCP e ignora qualsiasi configurazione che definisci nella risorsa di rete.
- Se il DHCP esterno non è impostato su
true
nella risorsa di rete, devi configurare un indirizzo IP statico per la VM. Tutte le altre informazioni provengono dalla configurazione che definisci nella risorsa di rete.
Per creare una VM che si connette a una rete, completa i seguenti passaggi:
Interfaccia a riga di comando
Per creare una VM utilizzando
kubectl
, completa i seguenti passaggi:kubectl virt create vm VM_NAME \ --image ubuntu20.04 \ --network NETWORK_NAME
Sostituisci i seguenti valori:
VM_NAME
: il nome della VM.NETWORK_NAME
: il nome della rete a cui connetterti.- Se la rete è configurata in modo da consentire l'utilizzo di DHCP esterno
ai server, alla VM viene assegnata
automaticamente un indirizzo IP. Se
devi definire un indirizzo IP statico, aggiungi il parametro e il valore facoltativi
--ip IP_ADDRESS
.
- Se la rete è configurata in modo da consentire l'utilizzo di DHCP esterno
ai server, alla VM viene assegnata
automaticamente un indirizzo IP. Se
devi definire un indirizzo IP statico, aggiungi il parametro e il valore facoltativi
Manifest
Per creare una VM utilizzando un manifest YAML:
Crea un manifest
VirtualMachine
, ad esempiomy-vm.yaml
, nell'editor di la tua scelta:nano my-vm.yaml
Copia e incolla il seguente manifest YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true disks: - virtualMachineDiskName: VM_NAME-boot-dv boot: true
In questo manifest YAML, definisci le seguenti impostazioni:
VM_NAME
: il nome della VM.NETWORK_NAME
: il nome della rete a cui connetterti.IP_ADDRESS
: l'indirizzo IP in notazione CIDR verso da assegnare alla VM, ad esempio192.0.2.10/24
.- Se la rete è configurata in modo da consentire l'utilizzo di DHCP esterno
rimuovi questo campo dal file manifest
VirtualMachine
.
- Se la rete è configurata in modo da consentire l'utilizzo di DHCP esterno
rimuovi questo campo dal file manifest
Il disco di avvio denominato
VM_NAME-boot-dv
deve già esistere. Per ulteriori informazioni, consulta Creare un disco di avvio della VM.Salva e chiudi il manifest
VirtualMachine
nell'editor.Crea la VM utilizzando
kubectl
:kubectl apply -f my-vm.yaml