Creare e utilizzare reti virtuali per il runtime VM su GDC

Questo documento è rivolto ad amministratori IT, operatori e specialisti di Networking che utilizzano Google Distributed Cloud. Questo documento illustra come creare e utilizzare reti virtuali per supportare i workload VM che utilizzano il runtime VM su GDC. Per scoprire di più sui ruoli comuni e sugli esempi di attività a cui facciamo riferimento nei contenuti di Google Cloud , consulta Ruoli e attività comuni per gli utenti di GKE Enterprise.

Prima di iniziare

Per completare questo documento, devi disporre dell'accesso alle seguenti risorse:

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 emittenti è soggetta ad alcune condizioni. Ad esempio, il controller di rete rifiuta l'eliminazione di una rete quando è in uso da qualsiasi risorsa, ad esempio VM o interfacce di rete.

La definizione della rete può includere il gateway, i route e le informazioni DNS. Puoi anche attivare 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 creato un 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 cluster.

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 VM su GDC senza dover eseguire passaggi aggiuntivi per creare le tue reti virtuali. Molti dei nostri documenti utilizzano questo valore predefinito pod-network per ridurre la complessità degli esempi. Le esigenze dei tuoi carichi di lavoro VM determinano se questo valore pod-network predefinito è 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 le route, il DNS e il nome dell'interfaccia sono stati inseriti 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 supportino le funzionalità di cui hai bisogno, ad esempio l'utilizzo di un server DHCP esterno o di un ID VLAN. Queste reti forniscono connettività di livello 2 (L2) per le tue VM.

Utilizzare un server DHCP esterno

Il runtime della 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 attivi l'utilizzo di un server DHCP esterno, puoi saltare la configurazione delle impostazioni DNS e del gateway se sono fornite da DHCP.

Per creare una rete che utilizza un server DHCP esterno, completa i passaggi seguenti:

  1. Crea un file manifest Network, ad esempio use-dhcp-network.yaml, nell'editor di tua scelta:

    nano use-dhcp-network.yaml
    
  2. 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 rete.
    • INTERFACE_NAME: il nome dell'interfaccia sul node Google Distributed Cloud a cui collegare la rete. Specifica il nome dell'interfaccia fisica da utilizzare sul nodo. Tutti i nodi nel cluster devono avere lo stesso nome dell'interfaccia.

    In questo file manifest Network sono impostati i seguenti valori:

    • L'opzione type è impostata su L2. Con questa impostazione, i workload possono avere solo un collegamento di livello 2 a questa rete. Questa è l'unica rete type che puoi creare nel runtime VM su GDC.
    • L'opzione externalDHCP4 è impostata su true. 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 workload connessi a questa rete.
  3. Salva e chiudi il file manifest Network nell'editor.

  4. Crea la rete utilizzando kubectl:

    kubectl apply -f use-dhcp-network.yaml
    

Definire manualmente le impostazioni di rete

Il runtime della 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 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:

  1. Crea un file manifest Network, ad esempio manual-network.yaml, nell'editor scelto:

    nano manual-network.yaml
    
  2. 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 rete.
    • INTERFACE_NAME: il nome dell'interfaccia sul node Google Distributed Cloud a cui collegare la rete. Specifica il nome dell'interfaccia fisica da utilizzare sul nodo. Tutti i nodi nel cluster devono avere lo stesso nome dell'interfaccia.
    • ROUTE_ADDRESS: route facoltative in notazione CIDR da configurare su ogni VM connessa a questa rete.
    • GATEWAY_ADDRESS: l'indirizzo IP del gateway da utilizzare per le VM.
    • NAMESERVER_ADDRESS: uno o più indirizzi IP dei server dei nomi DNS da utilizzare per le VM.
  3. Salva e chiudi il file manifest Network nell'editor.

  4. Crea la rete utilizzando kubectl:

    kubectl apply -f manual-network.yaml
    

Utilizzare un ID VLAN

Quando crei reti virtuali, puoi definire VLAN con tag. Queste assegnazioni VLAN consentono di isolare il traffico di rete in base ai requisiti e alle esigenze di isolamento del carico di lavoro. In una rete AnthosManaged, il cluster ha l'autorizzazione per creare ed eliminare l'interfaccia VLAN su ogni nodo.

Per creare una rete che definisce un'assegnazione VLAN, completa i seguenti passaggi:

  1. Crea un file manifest Network, ad esempio vlan-network.yaml, nell'editor scelto:

    nano vlan-network.yaml
    
  2. 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 rete.
    • INTERFACE_NAME: il nome dell'interfaccia sul node Google Distributed Cloud a cui collegare la rete. Specifica il nome dell'interfaccia fisica da utilizzare 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 file manifest Network sono impostati i seguenti valori:

    • I workload possono avere un solo allegato 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 su UserManaged come mostrato nella sezione successiva.
    • Nella rete è abilitato il DHCP esterno. Il server DHCP esterno è responsabile dell'allocazione degli indirizzi IPv4, delle route, del gateway e della configurazione DNS per i workload connessi a questa rete.
  3. Salva e chiudi il file manifest Network nell'editor.

  4. Crea la rete utilizzando kubectl:

    kubectl apply -f vlan-network.yaml
    

Creare una rete gestita dall'utente

Nel seguente esempio di rete virtuale, la rete è gestita dall'utente, diversamente da gestita da Anthos 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:

  1. Crea un file manifest Network, ad esempio user-managed-network.yaml, nell'editor che preferisci:

    nano user-managed-network.yaml
    
  2. 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 file manifest Network sono impostati i seguenti valori:

    • I workload possono avere un solo allegato L2 a questa rete.
    • La rete è UserManaged. Devi creare o eliminare l'interfaccia VLANVLAN_ID su ogni nodo prima della creazione o dell'eliminazione della rete.
    • Nella rete è abilitato il DHCP esterno. Il server DHCP esterno è responsabile dell'allocazione degli indirizzi IPv4, delle route, del gateway e della configurazione DNS per i workload connessi a questa rete.
  3. Salva e chiudi il file manifest Network nell'editor.

  4. 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. Le informazioni aggiuntive per configurare il gateway e la route devono provenire dalla risorsa di rete.
  • Se non configuri un indirizzo IP statico sulla 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 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, segui questi 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 per consentire l'utilizzo di server DHCP esterni, 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.

Manifest

Per creare una VM utilizzando un manifest YAML:

  1. Crea un file manifest VirtualMachine, ad esempio my-vm.yaml, nell'editor scelto:

    nano my-vm.yaml
    
  2. 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 da assegnare alla VM, ad esempio 192.0.2.10/24.
      • Se la tua rete è configurata per consentire l'utilizzo di server DHCP esterni, rimuovi questo campo dal file manifest VirtualMachine.

    Il disco di avvio denominato VM_NAME-boot-dv deve già esistere. Per ulteriori informazioni, consulta Creare un disco di avvio della VM.

  3. Salva e chiudi il file manifest VirtualMachine nell'editor.

  4. Crea la VM utilizzando kubectl:

    kubectl apply -f my-vm.yaml
    

Passaggi successivi