Il runtime VM su GDC consente di eseguire e gestire macchine virtuali (VM) Linux direttamente su bare metal. In questo tutorial configurerai le dipendenze essenziali, tra cui un StorageClass e una rete virtuale, quindi creerai una VM che utilizza queste risorse. Modifichi anche la configurazione della VM per collegare un disco aggiuntivo.
Obiettivi
- Configura le dipendenze di base
- Crea un
StorageClassper VM Runtime on GDC - Crea una rete virtuale da utilizzare per le tue VM
- Crea un
- Crea un disco di avvio della macchina virtuale
- Crea una VM
- Modifica una VM per aggiungere un nuovo disco virtuale
Prima di iniziare
Per completare questo tutorial, devi avere accesso alle seguenti risorse e ai seguenti strumenti:
- Accesso a un cluster Google Distributed Cloud versione 1.12.0 (
anthosBareMetalVersion: 1.12.0) o successiva. Puoi utilizzare qualsiasi tipo di cluster in grado di eseguire workload. Se necessario, prova Google Distributed Cloud su Compute Engine o consulta la panoramica della creazione dei cluster. - Lo strumento client
virtctlinstallato come plug-in perkubectl. Se necessario, installa lo strumento client virtctl.
Crea un StorageClass
Utilizza un StorageClass per definire il tipo di archiviazione che metti a disposizione delle VM. Classi di archiviazione diverse potrebbero essere mappate a un tipo diverso di hardware di archiviazione, file system o prestazioni.
Fornire istruzioni specifiche per ogni partner StorageClass e di archiviazione esula dall'ambito di questo tutorial.
I partner di archiviazione Google Distributed Cloud Ready forniscono driver Container Storage Interface (CSI) qualificati che installano e configurano le risorse personalizzate richieste per lo spazio di archiviazione. Per installare il driver CSI nel tuo 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 di NFS StorageClass utilizza il driver CSI NFS.
Puoi definire l'indirizzo e il percorso del server NFS da utilizzare in StorageClass. Tutti i nodi del cluster possono quindi 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.
VM Runtime on GDC genera automaticamente un profilo di archiviazione per ogni StorageClass in un cluster. Il profilo di archiviazione ha lo stesso nome della StorageClass associata. I profili di archiviazione forniscono opzioni di configurazione aggiuntive associate a ogni StorageClass. Per ulteriori informazioni sui profili di archiviazione, incluse le istruzioni di configurazione, consulta Configura 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 nel cluster o con risorse esterne al cluster.
In questo tutorial creerai una rete virtuale di livello 2 (L2) di base che può utilizzare un server DHCP esterno. Quando attivi l'utilizzo di un server DHCP esterno, puoi saltare la configurazione delle impostazioni DNS e del gateway se sono fornite dal DHCP.
Per creare una rete che utilizza un server DHCP esterno, completa i seguenti passaggi:
Crea un manifest
Network, ad esempiodhcp-network.yaml, nell'editor che preferisci:nano dhcp-network.yamlCopia 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: trueSostituisci i seguenti valori:
NETWORK_NAME: il nome della rete.INTERFACE_NAME: il nome dell'interfaccia sul nodo 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 workload possono avere un solo collegamento
L2a questa rete. Questo è l'unico tipo di retetypeche puoi creare nel runtime VM su GDC. - La rete ha il DHCP esterno abilitato. 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.
Salva e chiudi il manifest
Networknell'editor.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 avviarsi da un'immagine ISO per installare manualmente 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, 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.
Crea un manifest
VirtualMachineDisk, ad esempiomy-disk.yaml, nell'editor che preferisci:nano my-disk.yamlCopia 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.imgSostituisci i seguenti valori:
DISK_NAME: il nome che vuoi assegnare al disco. Questo esempio crea un disco da20Gi(20 gibibyte) denominatoDISK_NAMEutilizzando un'immagine Ubuntu Server 20.04 pubblica.STORAGE_CLASS_NAME:StorageClassche vuoi utilizzare perVirtualMachineDisk.- Utilizza
kubectl get storageclassper elencare gli elementi disponibili nel tuo cluster.
- Utilizza
Salva e chiudi il manifest
VirtualMachineDisknell'editor.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. Le seguenti istruzioni creano una VM applicando direttamente un file manifest YAML VirtualMachine con l'interfaccia a riga di comando kubectl.
Crea un manifest che definisca un
VirtualMachine, ad esempiomy-vm.yaml, nell'editor che preferisci:nano my-vm.yamlCopia 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_NAMESostituisci i seguenti valori:
VM_NAME: il nome della VM.VCPU_NUMBER: il numero facoltativo di vCPU da assegnare alla VM. Senza questa impostazione, viene assegnato 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 alla VM. Senza questa impostazione, viene assegnata la memoria predefinita di 4 GiB.- Puoi assegnare a una VM una quantità di memoria compresa tra 1M e 1T. Per saperne di più, consulta Unità di risorse 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 suboot: true.
Salva e chiudi il manifest nell'editor.
Crea la VM e il disco utilizzando
kubectl:kubectl apply -f my-vm.yamlLa creazione della VM può richiedere alcuni minuti. Controlla lo stato della VM con il comando kubectl:
kubectl get gvm VM_NAMEL'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 alla console ti consente di eseguire attività di base, ad esempio configurare ulteriormente la VM o installare un'applicazione.
Per accedere a una VM dalla console, utilizza
kubectl:kubectl virt console VM_NAMEQuando richiesto, inserisci le credenziali utente specificate per creare la VM.
Dopo aver eseguito correttamente la connessione alla console della VM, esci dalla sessione della 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 o utilizzare spazio di archiviazione aggiuntivo per la tua applicazione.
In questo tutorial, creerai un disco vuoto e lo collegherai alla VM. Questo scenario ti consente di creare un disco dati per archiviare i dati dell'applicazione.
Crea un manifest
VirtualMachineDisk, ad esempiomy-data-disk.yaml, nell'editor che preferisci:nano my-data-disk.yamlCopia 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_NAMESostituisci i seguenti valori:
DATA_DISK_NAME: il nome che vuoi assegnare al disco dati. Questo esempio crea un disco da10Gi(10 gibibyte).STORAGE_CLASS_NAME:StorageClassche vuoi utilizzare perVirtualMachineDisk.- Utilizza
kubectl get storageclassper elencare gli elementi disponibili nel tuo cluster.
- Utilizza
Salva e chiudi il manifest del disco nell'editor.
Crea il disco utilizzando
kubectl:kubectl apply -f my-data-disk.yamlUtilizza
kubectlper arrestare la VM prima di collegare il nuovo disco virtuale:kubectl virt stop VM_NAMEModifica la risorsa VM:
kubectl edit gvm VM_NAMEAggiorna il manifest YAML
VirtualMachineper collegare il disco alla fine della sezionespec.disksdella VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: ... disks: - boot: true virtualMachineDiskName: DISK_NAME - virtualMachineDiskName: DATA_DISK_NAMESostituisci
DATA_DISK_NAMEcon il nome del disco creato nel passaggio precedente.Salva e chiudi il manifest della VM aggiornato nell'editor.
Utilizza
kubectlper avviare la VM:kubectl virt start VM_NAME
Esegui la pulizia
Per eliminare le risorse create in questo tutorial, completa i seguenti passaggi:
Elimina la VM:
kubectl delete -f my-vm.yamlElimina 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 i seguenti passaggi:
Elimina la rete virtuale:
kubectl delete -f use-dhcp-network.yamlPer rimuovere il driver CSI dal cluster, segui le istruzioni del tuo partner di archiviazione.