Questo documento è rivolto ai proprietari di applicazioni e agli amministratori di piattaforme che eseguono cluster Anthos su Bare Metal. Questo documento mostra come creare e utilizzare reti virtuali per supportare i carichi di lavoro delle VM che utilizzano Anthos VM Runtime.
Prima di iniziare
Per completare il documento, devi accedere alle seguenti risorse:
- Accesso ai cluster Anthos su Bare Metal versione 1.12.0 (
anthosBareMetalVersion: 1.12.0
) o superiore. Puoi utilizzare qualsiasi tipo di cluster in grado di eseguire carichi di lavoro. Se necessario, prova i cluster Anthos su Bare Metal su Compute Engine o consulta la panoramica per la creazione dei cluster. - Lo strumento client di
virtctl
è stato 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 degli ID VLAN, se definite, 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 è utilizzata da risorse, ad esempio VM o interfacce di rete.
La definizione di rete può includere informazioni su gateway, route e DNS. Puoi anche abilitare l'uso di un server DHCP esterno. Queste impostazioni di rete vengono assegnate in modo statico o dinamico a seconda di come vengono definite determinate opzioni di configurazione di rete.
Rete di pod predefinita
Ogni cluster ha un pod-network
creato per impostazione predefinita. Questa rete non può essere modificata. Le route per il CIDR del pod e il CIDR del servizio e la configurazione DNS vengono completate automaticamente. La configurazione DNS utilizza gli stessi valori del cluster.
pod-network
può essere utilizzato dai carichi di lavoro che richiedono un'interfaccia per accedere alla rete dei 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 al servizio per i carichi di lavoro, anche se il gateway predefinito non è nell'interfaccia pod-network
.
Questo pod-network
predefinito ti consente di testare il runtime VM VM senza ulteriori passaggi per creare le tue reti virtuali. Molti dei nostri documenti utilizzano questo pod-network
predefinito per ridurre la complessità degli esempi. Le esigenze dei tuoi carichi di lavoro VM determinano se il valore predefinito di pod-network
è sufficiente o se devi creare e utilizzare le tue reti virtuali.
Il seguente manifest YAML mostra una configurazione di esempio per pod-network
.
I valori per route, DNS e nome interfaccia sono stati compilati dal 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 supportano le funzionalità necessarie, ad esempio l'utilizzo di un server DHCP esterno o l'utilizzo di un ID VLAN. Queste reti forniscono la connettività di livello 2 (L2) per le VM.
Prima di iniziare a creare reti, verifica la seguente opzione di configurazione del cluster:
Verifica che il campo
multipleNetworkInterfaces
nella sezioneclusterNetwork
della configurazione del cluster sia impostato su false. Questo campo è utilizzato per multi-NIC per i pod e deve essere disabilitato per Anthos VM Runtime. Il file di configurazione del cluster è archiviato comebmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml
, a meno che tu non abbia specificato una località diversa.Se la configurazione del cluster definisce
multipleNetworkInterfaces: true
, devi creare un altro cluster e poi attivare il runtime Anthos VM.... clusterNetwork: multipleNetworkInterfaces: false ...
Utilizzare un server DHCP esterno
Il runtime Anthos VM non fornisce server DHCP. Devi specificare manualmente gli indirizzi IP per le VM o configurare l'uso di server DHCP esterni. Quando abiliti l'utilizzo di un server DHCP esterno, puoi saltare la configurazione delle impostazioni DNS e gateway se vengono fornite da DHCP.
Per creare una rete che utilizza un server DHCP esterno, completa i passaggi seguenti:
Crea un manifest
Network
, ad esempiouse-dhcp-network.yaml
, nell'editor che preferisci: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 nei cluster Anthos su nodo Bare Metal a cui collegare la rete. Specifica il nome dell'interfaccia fisica sul nodo da utilizzare. Tutti i nodi nel tuo cluster devono avere lo stesso nome di interfaccia.
In questo manifest
Network
sono impostati i seguenti valori:- L'opzione
type
è impostata suL2
. Con questa impostazione, i carichi di lavoro possono avere solo un collegamento di livello 2 a questa rete. Questa è l'unica retetype
che puoi creare in Anthos VM Runtime. - L'opzione
externalDHCP4
è impostata sutrue
. Questa impostazione attiva il DHCP esterno per la rete. 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 manifest
Network
nell'editor.Crea la rete utilizzando
kubectl
:kubectl apply -f use-dhcp-network.yaml
Definisci manualmente le impostazioni di rete
Il runtime Anthos VM non fornisce server DHCP. Devi specificare manualmente gli indirizzi IP per le VM o configurare l'uso di server DHCP esterni. Se specifichi manualmente gli indirizzi IP, devi definire le impostazioni di rete per DNS, route e gateway predefinito.
Per creare una rete con impostazioni di rete specificate manualmente per le VM, completa i seguenti passaggi:
Crea un manifest
Network
, ad esempiomanual-network.yaml
, nell'editor che preferisci: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 nei cluster Anthos su nodo Bare Metal a cui collegare la rete. Specifica il nome dell'interfaccia fisica sul nodo da utilizzare. Tutti i nodi nel tuo cluster devono avere lo stesso nome di interfaccia.ROUTE_ADDRESS
: route facoltative nella notazione CIDR per configurare su ogni VM che si connette a questa rete.GATEWAY_ADDRESS
: l'indirizzo IP del gateway che le VM devono utilizzare.NAMESERVER_ADDRESS
: uno o più indirizzi IP DNS dei server dei nomi 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 taggate. Queste assegnazioni VLAN ti aiutano a isolare il traffico di rete in base ai requisiti dei carichi di lavoro e alle esigenze di isolamento. In una rete AnthosManaged
, il cluster ha l'autorizzazione per creare ed eliminare l'interfaccia VLAN su tutti i nodi.
Per creare una rete che definisce un'assegnazione VLAN:
Crea un manifest
Network
, ad esempiovlan-network.yaml
, nell'editor che preferisci: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 nei cluster Anthos su nodo Bare Metal a cui collegare la rete. Specifica il nome dell'interfaccia fisica sul nodo da utilizzare. Tutti i nodi nel tuo cluster devono avere lo stesso nome di 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
. Se non specificata, questa impostazione è il ciclo di vita predefinito.- In questa modalità, il cluster è autorizzato a creare ed eliminare l'interfaccia VLAN su tutti i nodi, ad esempio
INTERFACE_NAME.VLAN_ID
. - Se vuoi creare o hai già creato la interfaccia VLAN sui nodi, imposta il valore
networkLifecycle
suUserManaged
come mostrato nella sezione successiva.
- In questa modalità, il cluster è autorizzato a creare ed eliminare l'interfaccia VLAN su tutti i nodi, ad esempio
- La rete ha un DHCP esterno abilitato. 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 manifest
Network
nell'editor.Crea la rete utilizzando
kubectl
:kubectl apply -f vlan-network.yaml
Creare una rete gestita dall'utente
Nell'esempio seguente di rete virtuale, la rete è gestita dall'utente, invece che Anthos-managed in un esempio precedente. Nelle reti gestite dagli utenti, sei responsabile della creazione o dell'eliminazione dell'interfaccia VLAN sull'host.
Per creare una rete in modalità gestita dall'utente e definire manualmente la configurazione dell'interfaccia VLAN:
Crea un manifest
Network
, ad esempiouser-managed-network.yaml
, nell'editor preferito: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 tua 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 solo un collegamento
L2
a questa rete. - La rete è
UserManaged
. Devi creare o eliminare l'interfaccia VLANVLAN_ID
in ogni nodo prima della creazione della rete o dopo l'eliminazione. - La rete ha un DHCP esterno abilitato. 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 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 tua VM, ad esempio DNS e DHCP, vengono assegnate in modo statico o dinamico a seconda di come vengono definite alcune opzioni di configurazione di rete:
- Se configuri un indirizzo IP statico sulla VM, non viene inviata alcuna query a un server DHCP. Ulteriori informazioni per configurare il gateway e la route devono provenire dalla risorsa di rete.
- Se non configuri un indirizzo IP statico nella VM, viene inviata una query al server DHCP. La VM riceve tutte le informazioni dal server DHCP e ignora qualsiasi configurazione definita 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 definita nella risorsa di rete.
Per creare una VM che si connette a una rete, completa i passaggi seguenti:
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 tua VM.NETWORK_NAME
: il nome della rete a cui connetterti.- Se la rete è configurata in modo da consentire l'utilizzo di server DHCP esterni, la VM riceve automaticamente un'assegnazione degli indirizzi IP. Se devi definire un indirizzo IP statico, aggiungi il parametro facoltativo
--ip IP_ADDRESS
e il valore.
- Se la rete è configurata in modo da consentire l'utilizzo di server DHCP esterni, la VM riceve automaticamente un'assegnazione degli indirizzi IP. Se devi definire un indirizzo IP statico, aggiungi il parametro facoltativo
Manifest
Per creare una VM utilizzando un manifest YAML, completa i passaggi seguenti:
Crea un manifest
VirtualMachine
, ad esempiomy-vm.yaml
, nell'editor che preferisci: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 tua VM.NETWORK_NAME
: il nome della rete a cui connetterti.IP_ADDRESS
: l'indirizzo IP nella notazione CIDR da assegnare alla VM, come192.0.2.10/24
.- Se la tua rete è configurata in modo da consentire l'utilizzo di server DHCP esterni, rimuovi questo campo dal file manifest
VirtualMachine
.
- Se la tua rete è configurata in modo da consentire l'utilizzo di server DHCP esterni, rimuovi questo campo dal file manifest
Il disco di avvio denominato
VM_NAME-boot-dv
deve già esistere. Per ulteriori informazioni, consulta la pagina Creare un disco di avvio VM.Salva e chiudi il manifest
VirtualMachine
nell'editor.Crea la VM utilizzando
kubectl
:kubectl apply -f my-vm.yaml