Questo tutorial mostra come creare e gestire una macchina virtuale (VM) Linux
in una nuova installazione di VM Runtime su GDC. Scopri la procedura per creare e definire le dipendenze di base, come un StorageClass
e una rete virtuale, quindi crea una VM che utilizza queste risorse. Poi imparerai a modificare
la VM, ad esempio per aggiungere un nuovo disco.
Crea un StorageClass
Utilizzi un StorageClass
per definire il tipo di archiviazione che rendi disponibile per le 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 StorageClass
e partner 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 l'archiviazione. Per installare il driver CSI nel cluster, esamina l'elenco dei partner di archiviazione supportati e segui le loro 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 utilizzi una di queste classi di archiviazione per creare un disco rigido virtuale.
Il seguente esempio di base
NFS StorageClass
utilizza il
driver CSI NFS.
Definisci 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 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 forniscono opzioni di configurazione aggiuntive
associate a ogni StorageClass
. Per ulteriori informazioni sui profili di archiviazione, incluse le istruzioni di configurazione, consulta 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 nel cluster o con risorse al di fuori del cluster.
In questo tutorial, crei una rete virtuale di base 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 gateway se vengono fornite da
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.yaml
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 nodo Google Distributed Cloud a cui collegare la rete. Tutti i nodi devono avere lo stesso nome dell'interfaccia.
In questo file manifest
Network
sono impostati i seguenti valori:- I workload possono avere solo un allegato
L2
a questa rete. Questa è l'unica retetype
che puoi creare nel runtime VM su GDC. - La rete ha il DHCP esterno abilitato. Il server DHCP esterno è responsabile dell'allocazione di indirizzi IPv4, route, gateway e configurazione DNS per i carichi di lavoro connessi a questa rete.
Salva e chiudi il file manifest
Network
nell'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 avviare l'avvio da un'immagine ISO per installare manualmente il sistema operativo. È possibile archiviare queste immagini disco e accedervi tramite HTTP oppure in
Cloud Storage e accedervi utilizzando 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:
Crea un file manifest
VirtualMachineDisk
, ad esempiomy-disk.yaml
, nell'editor che preferisci:nano my-disk.yaml
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 esempio crea un disco20Gi
(20 gibibyte) denominatoDISK_NAME
utilizzando un'immagine pubblica di Ubuntu Server 20.04.STORAGE_CLASS_NAME
: ilStorageClass
che vuoi utilizzare per il tuoVirtualMachineDisk
.- Utilizza
kubectl get storageclass
per elencare i contenuti disponibili nel cluster.
- Utilizza
Salva e chiudi il file manifest
VirtualMachineDisk
nell'editor.Crea il disco utilizzando
kubectl
:kubectl apply -f my-disk.yaml
Crea una VM
Ora che hai creato una rete virtuale e un disco di avvio nelle sezioni precedenti, 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 la CLI kubectl
.
Crea un manifest che definisca un
VirtualMachine
, ad esempiomy-vm.yaml
, nell'editor che preferisci:nano my-vm.yaml
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 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à di memoria facoltativa da assegnare alla VM. Senza questa impostazione, viene assegnato il valore predefinito di 4 GiB di memoria.- Puoi assegnare da 1 MB a 1 TB di memoria a una VM. Per ulteriori informazioni, vedi 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.yaml
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 nello stato
Running
:NAME STATUS AGE IP MY_VM Running 64s 192.168.2.124
Connettiti alla VM
Quando la VM è in esecuzione, connettiti alla relativa console. 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_NAME
Quando richiesto, inserisci le credenziali utente che hai specificato per creare la VM.
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 o utilizzare spazio di archiviazione aggiuntivo per la tua applicazione.
In questo tutorial, crea un disco vuoto e collegalo alla VM. Questo scenario ti consente di creare un disco di dati per archiviare i dati delle applicazioni.
Crea un file manifest
VirtualMachineDisk
, ad esempiomy-data-disk.yaml
, nell'editor che preferisci:nano my-data-disk.yaml
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 dati. Questo esempio crea un disco10Gi
(10 gibibyte).STORAGE_CLASS_NAME
: ilStorageClass
che vuoi utilizzare per il tuoVirtualMachineDisk
.- Utilizza
kubectl get storageclass
per elencare i contenuti disponibili nel cluster.
- Utilizza
Salva e chiudi il file manifest del disco nell'editor.
Crea il disco utilizzando
kubectl
:kubectl apply -f my-data-disk.yaml
Utilizza
kubectl
per arrestare la VM prima di collegare il nuovo disco virtuale:kubectl virt stop VM_NAME
Modifica la risorsa VM:
kubectl edit gvm VM_NAME
Aggiorna il file manifest YAML
VirtualMachine
per collegare il disco alla fine della sezionespec.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.Salva e chiudi il manifest della VM aggiornato nell'editor.
Utilizza
kubectl
per avviare la VM:kubectl virt start VM_NAME