Tutorial: creare e gestire una VM Linux nel runtime VM di Anthos


Questo tutorial mostra come creare e gestire una macchina virtuale (VM) Linux su una nuova installazione di Anthos VM Runtime. Imparerai il processo di creazione e definizione delle dipendenze di base, ad esempio StorageClass e rete virtuale, quindi creerai una VM che utilizza queste risorse. Imparerai quindi come modificare la VM, ad esempio per aggiungere un nuovo disco.

Obiettivi

  • Configura le dipendenze di base
    • Crea un StorageClass per il runtime VM di Anthos
    • Crea una rete virtuale da utilizzare per le tue VM
  • Crea un disco di avvio di una macchina virtuale
  • Crea una VM
  • Modifica una VM per aggiungere un nuovo disco virtuale

Prima di iniziare

Per completare questo tutorial, devi accedere ai seguenti strumenti e risorse:

Crea un StorageClass

Puoi utilizzare un StorageClass per definire il tipo di archiviazione che metti a disposizione delle VM. Classi di archiviazione diverse possono essere mappate a un tipo diverso di hardware, file system o prestazioni di archiviazione.

Non c'è l'ambito di questo tutorial per fornire istruzioni specifiche per ogni StorageClass e partner di archiviazione.

I partner di archiviazione di Anthos Ready forniscono driver Container Storage Interface (CSI) qualificati che installano e configurano le risorse personalizzate necessarie per il tuo archiviazione. Per installare il driver CSI nel cluster, esamina l'elenco dei partner di archiviazione supportati e segui le relative istruzioni.

Dopo aver installato il driver CSI per la tua piattaforma di archiviazione, una o più classi di archiviazione sono disponibili nel cluster. Usa una di queste classi di archiviazione per creare un disco rigido virtuale in questo tutorial.

Nel seguente esempio di base NFS StorageClass viene utilizzato il driver CSI NFS. Definisci l'indirizzo e il percorso del server NFS da utilizzare nel StorageClass. Tutti i nodi nel tuo cluster possono quindi connettersi e utilizzare questo spazio di archiviazione NFS:

  apiVersion: storage.k8s.io/v1
  kind: StorageClass
  metadata:
    name: example-nfs
  provisioner: nfs.csi.k8s.io
  parameters:
    server: nfs-server.example.com
    path: /vm-share
  reclaimPolicy: Delete
  volumeBindingMode: Immediate
  mountOptions:
    - nconnect=8
    - nfsvers=4.1

In questo tutorial, utilizza il nome di un StorageClass nel tuo cluster.

Il runtime VM di Anthos genera automaticamente un profilo di archiviazione per ogni StorageClass in un cluster. Il profilo di archiviazione è lo stesso nome dell'oggetto StorageClass associato. I profili di archiviazione forniscono opzioni di configurazione aggiuntive associate a ogni StorageClass. Per ulteriori informazioni sui profili di archiviazione, comprese le istruzioni di configurazione, consulta Configurare i profili di archiviazione.

Crea una rete virtuale

Le VM si connettono a una rete virtuale mediante un'interfaccia di rete virtuale. La rete virtuale consente la comunicazione con altre VM nel cluster o con risorse esterne al cluster.

In questo tutorial creerai una rete virtuale di livello 2 (L2) che può utilizzare un server DHCP esterno. 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 dhcp-network.yaml, nell'editor che preferisci:

    nano dhcp-network.yaml
    
  2. Copia e incolla il seguente manifest YAML:

    apiVersion: networking.gke.io/v1
    kind: Network
      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. Tutti i nodi devono avere lo stesso nome di interfaccia.

    In questo manifest Network sono impostati i seguenti valori:

    • I carichi di lavoro possono avere solo un collegamento L2 a questa rete. Questa è l'unica rete type che puoi creare in Anthos VM Runtime.
    • 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 use-dhcp-network.yaml
    

Crea un disco di avvio della VM

Una VM può utilizzare un'immagine disco precreata o l'avvio da un'immagine ISO per installare manualmente il sistema operativo. È possibile archiviare e accedere a queste immagini disco tramite HTTP o Cloud Storage, utilizzando Secret.

In questo tutorial, creerai un disco di avvio dall'immagine cloud pubblica di Ubuntu Server 20.04 utilizzando HTTP.

Per creare un disco da un'immagine, completa i seguenti passaggi.

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

    nano my-disk.yaml
    
  2. Copia e incolla la seguente definizione YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 20Gi
      storageClassName: STORAGE_CLASS_NAME
      source:
        http:
          url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img
    

    Sostituisci i seguenti valori:

    • DISK_NAME: il nome che vuoi per il disco. Questo esempio crea un disco 20Gi (20 gibibyte) denominato DISK_NAME utilizzando un'immagine pubblica di Ubuntu 20.04.
    • STORAGE_CLASS_NAME: StorageClass da utilizzare per VirtualMachineDisk.
      • Utilizza kubectl get storageclass per elencare gli elementi disponibili nel cluster.
  3. Salva e chiudi il manifest VirtualMachineDisk nell'editor.

  4. Crea il disco utilizzando kubectl:

    kubectl apply -f my-disk.yaml
    

Crea una VM

Con una rete virtuale e un disco di avvio creati nelle sezioni precedenti, ora crea una VM. La VM si connette alla rete virtuale e si avvia dal disco virtuale.

  1. Crea un manifest che definisce un VirtualMachine, come my-vm.yaml, nell'editor di tua scelta:

    nano my-vm.yaml
    
  2. Copia e incolla la seguente definizione YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      osType: linux
      compute:
        cpu:
          vcpus: VCPU_NUMBER
        memory:
          capacity: MEMORY_SIZE
      interfaces:
        - name: eth0
          networkName: NETWORK_NAME
          default: true
      disks:
        - boot: true
          virtualMachineDiskName: DISK_NAME
    

    Sostituisci i seguenti valori:

    • VM_NAME: il nome della tua VM.
    • VCPU_NUMBER: il numero facoltativo di vCPU da assegnare alla VM. Senza questa impostazione, vengono assegnate per impostazione predefinita due vCPU.
      • Puoi assegnare da 1 a 96 vCPU a una VM.
    • MEMORY_SIZE: la quantità facoltativa di memoria da assegnare alla VM. Senza questa impostazione, viene assegnato il valore predefinito 4 GiB di memoria.
    • NETWORK_NAME: il nome della tua rete creato in una sezione precedente.
    • DISK_NAME: il nome del disco di avvio creato nella sezione precedente. Questo disco è impostato su boot: true.
  3. Salva e chiudi il manifest nell'editor.

  4. Crea la VM e il disco utilizzando kubectl:

    kubectl apply -f my-vm.yaml
    
  5. La creazione della VM può richiedere alcuni minuti. Controlla lo stato della VM con il comando kubectl:

    kubectl get gvm VM_NAME
    

    L'output di esempio seguente mostra la VM in stato Running:

    NAME    STATUS    AGE   IP
    MY_VM   Running   64s   192.168.2.124
    

Connettiti alla VM

Quando la VM è in esecuzione, connettiti alla console della VM. Questa connessione della console consente di eseguire attività di base come configurare ulteriormente la VM o installare un'applicazione.

  1. Per accedere a una VM dalla console, utilizza kubectl:

    kubectl virt ssh VM_NAME
    
  2. Dopo aver effettuato la connessione alla console della VM, esci da sessione e console VM:

    Ctrl + ]
    

Modifica la VM

Durante il ciclo di vita della VM, puoi modificare la VM. Ad esempio, potresti voler aggiungere spazio di archiviazione per installare un'applicazione su un disco dedicato oppure utilizzare spazio di archiviazione aggiuntivo per la tua applicazione.

In questo tutorial, crea un disco vuoto e collegalo alla VM. Questo scenario ti permette di creare un disco dati per archiviare i dati dell'applicazione.

  1. Crea un manifest VirtualMachineDisk, ad esempio my-data-disk.yaml, nell'editor che preferisci:

    nano my-data-disk.yaml
    
  2. Copia e incolla la seguente definizione YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DATA_DISK_NAME
    spec:
      size: 10Gi
      storageClassName: STORAGE_CLASS_NAME
    

    Sostituisci i seguenti valori:

    • DATA_DISK_NAME: il nome che vuoi per il tuo disco dati. Questo esempio crea un disco 10Gi (10 gibibyte).
    • STORAGE_CLASS_NAME: StorageClass da utilizzare per VirtualMachineDisk.
      • Utilizza kubectl get storageclass per elencare gli elementi disponibili nel cluster.
  3. Salva e chiudi il manifest del disco nell'editor.

  4. Crea il disco utilizzando kubectl:

    kubectl apply -f my-data-disk.yaml
    
  5. Usa kubectl per arrestare la VM prima di collegare il nuovo disco virtuale:

    kubectl virt stop VM_NAME
    
  6. Modifica la risorsa VM:

    kubectl edit gvm VM_NAME
    

    Aggiorna il manifest YAML VirtualMachine per collegare il disco alla fine della sezione spec.disks della VM:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: DISK_NAME
        - virtualMachineDiskName: DATA_DISK_NAME
    

    Sostituisci DATA_DISK_NAME con il nome del disco creato nel passaggio precedente.

  7. Salva e chiudi il manifest della VM aggiornato nell'editor.

  8. Usa kubectl per avviare la VM:

    kubectl virt start VM_NAME
    

Esegui la pulizia

Per eliminare le risorse create in questo tutorial, completa questi passaggi:

  1. Elimina la VM:

    kubectl delete -f my-vm.yaml
    
  2. Elimina le risorse di VirtualMachineDisk:

    kubectl delete -f my-data-disk.yaml
    kubectl delete -f my-disk.yaml
    

Se non vuoi mantenere le dipendenze di base nel cluster, completa i seguenti passaggi:

  1. Per eliminare la rete virtuale:

    kubectl delete -f use-dhcp-network.yaml
    
  2. Per rimuovere il driver CSI dal cluster, segui le istruzioni del tuo partner di archiviazione

Passaggi successivi