Crea e utilizza reti virtuali per Anthos VM Runtime

Questo documento è destinato a proprietari di applicazioni e amministratori di piattaforme che eseguono cluster Anthos su Bare Metal. Questo documento mostra come creare e utilizzare reti virtuali per supportare carichi di lavoro VM che utilizzano Anthos VM Runtime.

Prima di iniziare

Per completare questo documento, devi accedere alle seguenti risorse:

Panoramica delle reti virtuali

Le reti vengono create utilizzando risorse personalizzate. Dopo aver creato il cluster, puoi creare una rete in qualsiasi momento. Le impostazioni di rete per l'interfaccia host e l'assegnazione dell'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 viene utilizzata da risorse, come VM o interfacce di rete.

La definizione della rete può includere informazioni su gateway, route e 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 determinate opzioni di configurazione della 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 pod e il CIDR di 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 dei pod del cluster e non hanno bisogno di opzioni di configurazione specifiche. Le route di 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 di Anthos 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 carichi di lavoro delle 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 route, DNS e nome dell'interfaccia sono stati completati 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à necessarie, ad esempio l'utilizzo di un server DHCP esterno o l'utilizzo di un ID VLAN. Queste reti forniscono una connettività di livello 2 (L2) per le tue VM.

Prima di iniziare a creare reti, verifica la seguente opzione di configurazione del cluster:

  1. Verifica che il campo multipleNetworkInterfaces nella sezione clusterNetwork della configurazione del cluster sia impostato su falso. Questo campo è utilizzato per multi-NIC per i pod e deve essere disabilitato per Anthos VM Runtime. Il file di configurazione del cluster viene archiviato come bmctl-workspace/CLUSTER-NAME/CLUSTER-NAME.yaml, a meno che non specifichi una posizione diversa.

    Se la configurazione del cluster definisce multipleNetworkInterfaces: true, devi creare un altro cluster e abilitare il runtime VM di Anthos.

    ...
    clusterNetwork:
      multipleNetworkInterfaces: false
    ...
    

Usa un server DHCP esterno

Anthos VM Runtime non fornisce server DHCP. Devi specificare manualmente gli indirizzi IP per le VM o configurare l'utilizzo di server DHCP esterni. Quando abiliti 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 seguenti passaggi:

  1. Crea un manifest Network, ad esempio use-dhcp-network.yaml, nell'editor che preferisci:

    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 tua rete.
    • INTERFACE_NAME: il nome dell'interfaccia sui nodi di Cluster Anthos on bare metal a cui collegare la rete. Specifica il nome dell'interfaccia fisica sul tuo nodo da utilizzare. Tutti i nodi nel cluster devono avere lo stesso nome di interfaccia.

    In questo manifest Network sono impostati i seguenti valori:

    • Il valore di type è impostato su L2. Con questa impostazione, i carichi di lavoro possono avere solo un collegamento di livello 2 a questa rete. Questa è l'unica rete type che puoi creare in Anthos VM Runtime.
    • Il valore di externalDHCP4 è impostato su true. Questa impostazione attiva 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.
  3. Salva e chiudi il manifest Network nell'editor.

  4. Crea la rete utilizzando kubectl:

    kubectl apply -f use-dhcp-network.yaml
    

Definisci manualmente le impostazioni della rete

Anthos VM Runtime 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 networking specificate manualmente per le VM, completa i seguenti passaggi:

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

    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 tua rete.
    • INTERFACE_NAME: il nome dell'interfaccia sui nodi di Cluster Anthos on bare metal a cui collegare la rete. Specifica il nome dell'interfaccia fisica sul tuo nodo da utilizzare. Tutti i nodi nel cluster devono avere lo stesso nome di interfaccia.
    • ROUTE_ADDRESS: route facoltative nella notazione CIDR per la configurazione su ogni VM connessa a questa rete.
    • GATEWAY_ADDRESS: l'indirizzo IP del gateway che le VM possono utilizzare.
    • NAMESERVER_ADDRESS: uno o più indirizzi IP DNS del server dei nomi che le VM possono utilizzare.
  3. Salva e chiudi il manifest Network nell'editor.

  4. Crea la rete utilizzando kubectl:

    kubectl apply -f manual-network.yaml
    

Utilizza un ID VLAN

Quando crei reti virtuali, puoi definire le VLAN con tag. Queste assegnazioni VLAN ti aiutano a isolare il traffico di rete in base ai tuoi requisiti di carico di lavoro e alle tue esigenze di isolamento. In una rete AnthosManaged, il cluster è autorizzato a creare ed eliminare l'interfaccia VLAN su ogni nodo.

Per creare una rete che definisce un'assegnazione VLAN, procedi nel seguente modo:

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

    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 tua rete.
    • INTERFACE_NAME: il nome dell'interfaccia sui nodi di Cluster Anthos on bare metal a cui collegare la rete. Specifica il nome dell'interfaccia fisica sul tuo nodo da utilizzare. Tutti i nodi nel 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 l'interfaccia VLAN sui nodi, imposta il valore networkLifecycle su UserManaged come mostrato nella sezione successiva.
    • La rete ha 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.
  3. Salva e chiudi il manifest Network nell'editor.

  4. Crea la rete utilizzando kubectl:

    kubectl apply -f vlan-network.yaml
    

Creare una rete gestita dall'utente

Nell'esempio di rete virtuale, la rete è gestita dall'utente, al contrario di 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 una modalità gestita dall'utente e definire manualmente la configurazione dell'interfaccia VLAN, completa i seguenti passaggi:

  1. Crea un 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 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 VLAN VLAN_ID su ogni nodo prima che la rete venga creata o dopo che la rete è stata eliminata.
    • La rete ha 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.
  3. Salva e chiudi il 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 tua VM, come DNS e DHCP, vengono assegnate in modo statico o dinamico a seconda del modo in cui sono definite determinate opzioni di configurazione della 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 server 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 connetta 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 tua VM.
    • NETWORK_NAME: il nome della tua rete a cui connetterti.
      • Se la rete è configurata in modo da 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 facoltativo --ip IP_ADDRESS e il valore.

Manifest

Per creare una VM utilizzando un manifest YAML, completa i seguenti passaggi:

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

    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 tua VM.
    • NETWORK_NAME: il nome della tua 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 rete è configurata in modo da consentire l'utilizzo di server DHCP esterni, rimuovi questo campo dal manifest VirtualMachine.

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

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

  4. Crea la VM utilizzando kubectl:

    kubectl apply -f my-vm.yaml
    

Passaggi successivi