Tutorial: crea e gestisci una VM Linux nel runtime VM su GDC


Questo tutorial mostra come creare e gestire una macchina virtuale (VM) Linux su una nuova installazione del runtime VM su GDC. Imparerai il processo per crea e definisci le dipendenze di base come StorageClass e e poi creare una VM che utilizzi queste risorse. Imparerai quindi a modificare della VM, ad esempio l'aggiunta di un nuovo disco.

Obiettivi

  • Configura le dipendenze di base
    • Creare un StorageClass per il runtime VM su GDC
    • Crea una rete virtuale per le 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 alle seguenti risorse e strumenti:

Crea un StorageClass

Utilizza un StorageClass per definire il tipo di archiviazione reso disponibile per le VM. Classi di archiviazione diverse potrebbero essere associate a un tipo diverso di hardware di archiviazione, file system o prestazioni.

Non rientra nell'ambito di questo tutorial fornire istruzioni specifiche per ogni StorageClass e partner di archiviazione.

Partner di archiviazione Google Distributed Cloud Ready fornire risorse Container Storage Interface (CSI) che installano e configurano le risorse personalizzate richieste archiviazione. Per installare il driver CSI nel cluster, consulta l'elenco dei partner di archiviazione supportati e segui le relative istruzioni.

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

Il seguente esempio di base NFS StorageClass utilizza Driver CSI NFS. Sei tu a definire l'indirizzo e il percorso del server NFS da utilizzare in StorageClass. Tutti i nodi del tuo cluster possono connettersi a questo spazio di archiviazione NFS e utilizzarlo:

  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 su GDC genera automaticamente un profilo di archiviazione per ogni StorageClass in un cluster. Il profilo di archiviazione ha lo stesso nome del StorageClass associato. I profili di archiviazione offrono opzioni di configurazione aggiuntive associati a ogni StorageClass. Per ulteriori informazioni sullo spazio di archiviazione profili, comprese le istruzioni di configurazione, vedi Configurare i profili di archiviazione.

Crea una rete virtuale

Le VM si connettono a una rete virtuale utilizzando un'interfaccia di rete virtuale. La rete virtuale consente loro di comunicare con altre VM del cluster o con risorse al di fuori del cluster.

In questo tutorial viene creata una rete virtuale di livello 2 (L2) di base 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 le operazioni seguenti passaggi:

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

    nano 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. Tutti i nodi devono avere lo stesso nome dell'interfaccia.

    In questo manifest Network, sono impostati i seguenti valori:

    • I carichi di lavoro possono avere solo un collegamento L2 a questa rete. Questo è l'unico rete type che puoi creare nel runtime VM su GDC.
    • Nella rete è abilitato il 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.
  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 per VM

Una VM può utilizzare un'immagine disco creata in precedenza o avviarsi da un'immagine ISO per eseguire installare il sistema operativo. Queste immagini disco possono essere archiviate e accessibili tramite HTTP o in Cloud Storage e accessibili tramite un Secret.

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

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

  1. Crea un manifest VirtualMachineDisk, ad esempio my-disk.yaml, nella un editor di tua scelta:

    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 assegnare al disco. Questo Ad esempio, crea un disco 20Gi (20 gibibyte) denominato DISK_NAME che utilizza Ubuntu pubblico Immagine server 20.04.
    • STORAGE_CLASS_NAME: il StorageClass che vuoi utilizzare per il tuo VirtualMachineDisk.
      • Utilizza kubectl get storageclass per elencare i componenti disponibili nel tuo cluster.
  3. Salva e chiudi il file manifest VirtualMachineDisk nell'editor.

  4. Crea il disco utilizzando kubectl:

    kubectl apply -f my-disk.yaml
    

Crea una VM

Con la rete virtuale e il disco di avvio creati nelle sezioni precedenti, ora per creare una VM. La VM si connette alla rete virtuale e si avvia disco. Le seguenti istruzioni creano una VM applicando direttamente un File manifest YAML VirtualMachine con l'interfaccia a riga di comando kubectl.

  1. Crea un manifest che definisce un VirtualMachine, ad esempio my-vm.yaml, in l'editore che preferisci:

    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 VM.
    • VCPU_NUMBER: il numero facoltativo di vCPU da assegnare la VM. Senza questa impostazione, viene assegnata il valore predefinito di 2 vCPU.
      • Puoi assegnare da 1 a 96 vCPU a una VM.
    • MEMORY_SIZE: la quantità facoltativa di memoria da assegnare a la VM. Senza questa impostazione, viene assegnato il valore predefinito di 4 GiB di memoria.
    • NETWORK_NAME: il nome della rete creata 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 console di accesso rapido consente di eseguire attività di base come configurare ulteriormente la VM installare un'applicazione.

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

    kubectl virt console VM_NAME
    
  2. Quando richiesto, inserisci le credenziali utente che hai specificato per creare la VM.

  3. Dopo aver eseguito correttamente la connessione alla console della VM, esci dalla sessione VM e dalla console:

    Ctrl + ]
    

Modifica la VM

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

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

  1. Crea un manifest VirtualMachineDisk, ad esempio my-data-disk.yaml, nella un editor di tua scelta:

    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 assegnare al disco di dati. Questo esempio crea un disco da 10Gi (10 gibibyte).
    • STORAGE_CLASS_NAME: StorageClass che vuoi da usare per VirtualMachineDisk.
      • Usa kubectl get storageclass per elencare i componenti disponibili nel tuo 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. Utilizza 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 del 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 aggiornato della VM 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 quanto segue passaggi:

  1. Elimina la VM:

    kubectl delete -f my-vm.yaml
    
  2. Elimina le risorse 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 la seguenti passaggi:

  1. Elimina 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