Questo documento è destinato ai proprietari di applicazioni che utilizzano VM Runtime su GDC per eseguire macchine virtuali (VM) in cluster creati con Google Distributed Cloud (solo software) su bare metal. Questo documento mostra come modificare le VM in esecuzione nei cluster bare metal. Ad esempio, puoi modificare l'allocazione delle risorse, come CPU e memoria, o cambiare la rete a cui si connette una VM.
Puoi modificare qualsiasi campo nella sezione spec
di una risorsa VirtualMachine
.
Puoi anche modificare le etichette di una VM. Altri campi, come il nome della VM
(metadata.name
), non possono essere modificati. Per impostazione predefinita, la VM deve essere nello stato Stopped
prima di poter modificare la risorsa. Tuttavia, a partire dalla versione 1.13.0 di
Google Distributed Cloud, puoi configurare la risorsa VirtualMachine
in modo che si riavvii automaticamente ogni volta che modifichi la
configurazione.
Se le modifiche alla risorsa VirtualMachine
contengono errori quando le salvi, le modifiche vengono rifiutate e viene visualizzata una notifica. Correggi gli
errori e prova a salvare di nuovo la risorsa VirtualMachine
. Se la VM non
si avvia dopo aver apportato modifiche, utilizza il
comando kubectl describe gvm VM_NAME
per
visualizzare le informazioni per la risoluzione dei problemi e correggere gli errori.
Prima di iniziare
Per completare questo documento, devi avere accesso alle seguenti risorse:
- Una VM in esecuzione in uno dei tuoi cluster. Se necessario, crea una VM in un cluster bare metal.
- Lo strumento client
virtctl
installato come plug-in perkubectl
. Se necessario, installa lo strumento client virtctl.
Modifica le risorse di computing
Se le esigenze del tuo workload di calcolo cambiano, puoi aggiornare il numero di CPU virtuali e la quantità di memoria virtuale che assegni alle tue VM. Per modificare i tuoi workload di calcolo, completa i seguenti passaggi:
Arresta la VM che vuoi modificare:
kubectl virt stop VM_NAME
Sostituisci
VM_NAME
con il nome della VM che vuoi arrestare.Utilizza
kubectl
per modificare la VM:kubectl edit gvm VM_NAME
Sostituisci
VM_NAME
con il nome della VM che vuoi modificare.Nell'editor, aggiorna i valori delle risorse di calcolo che vuoi modificare.
Ad esempio, il seguente manifest
VirtualMachine
di esempio mostra che alla risorsa VM sono assegnate2
vCPU:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 2 ...
Se vuoi aggiornare il numero di vCPU assegnate, modifica il valore nell'editor, come mostrato nell'esempio seguente:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 4 ...
Salva e chiudi il manifest della VM.
Avvia la VM che hai modificato:
kubectl virt start VM_NAME
Sostituisci
VM_NAME
con il nome della VM che hai modificato.Controlla
STATUS
della tua VM:kubectl get gvm VM_NAME
Assicurati che la VM sia nello stato
Running
. Se la tua VM richiede più risorse di computing di quelle che l'host può fornire, non può essere avviata. Se la VM non è nello statoRunning
, controlla il manifest della risorsaVirtualMachine
e la disponibilità delle risorse di calcolo sull'host.L'output di esempio seguente mostra la VM nello stato
Running
:NAME STATUS AGE IP vm1 Running 1m 192.168.2.72
Visualizza informazioni dettagliate su una VM utilizzando
kubectl describe gvm
:kubectl describe gvm VM_NAME
Sostituisci
VM_NAME
con il nome della VM che hai modificato.L'output di esempio seguente mostra le informazioni condensate per una VM, con una modifica al numero di vCPU applicata correttamente:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Cpu: Vcpus: 4 ...
Per saperne di più, scopri come creare VM con configurazioni di calcolo specifiche per vCPU e memoria.
Modifica le risorse disco
Se i tuoi requisiti di spazio di archiviazione cambiano, puoi aggiungere o rimuovere dischi virtuali da una VM. Per modificare i dischi collegati alla VM, completa i seguenti passaggi:
Arresta la VM che vuoi modificare:
kubectl virt stop VM_NAME
Sostituisci
VM_NAME
con il nome della VM che vuoi arrestare.Utilizza
kubectl
per modificare la VM:kubectl edit gvm VM_NAME
Sostituisci
VM_NAME
con il nome della VM che vuoi modificare.Nell'editor, aggiorna la sezione
spec.disks
per collegare o scollegare i dischi.Ad esempio, il seguente manifest
VirtualMachine
di esempio mostra che alla VM è collegato solo un disco di avvio:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv ...
Se vuoi aggiungere un disco vuoto esistente, aggiorna la configurazione del disco nell'editor, come mostrato nell'esempio seguente:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv - virtualMachineDiskName: DISK_NAME ...
Sostituisci
DISK_NAME
con il nome del disco da collegare.Salva e chiudi il manifest della VM.
Avvia la VM che hai modificato:
kubectl virt start VM_NAME
Sostituisci
VM_NAME
con il nome della VM che hai modificato.Controlla
STATUS
della tua VM:kubectl get gvm VM_NAME
Assicurati che la VM sia nello stato
Running
. Se la tua VM richiede un'assegnazione diStorageClass
o di dischi che l'host non può fornire, la VM non può avviarsi. Se la VM non è nello statoRunning
, controlla i manifest delle risorseVirtualMachine
eVirtualMachineDisk
e il supporto dello spazio di archiviazione host.Visualizza informazioni dettagliate su una VM utilizzando
kubectl describe gvm
:kubectl describe gvm VM_NAME
Sostituisci
VM_NAME
con il nome della VM che hai modificato.L'output di esempio seguente mostra le informazioni condensate per una VM, con una modifica ai dischi collegati applicata correttamente:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Disks: Name: vm1-boot-dv Name: data-disk-01 ...
Per saperne di più, scopri come creare e gestire dischi.
Modificare le risorse di rete
Man mano che l'infrastruttura cambia, potresti voler modificare la configurazione di rete di una VM. Ad esempio, potresti voler connettere la VM a una rete virtuale diversa o assegnare manualmente un indirizzo IP. Per modificare la configurazione di rete di una VM, completa i seguenti passaggi:
Arresta la VM che vuoi modificare:
kubectl virt stop VM_NAME
Sostituisci
VM_NAME
con il nome della VM che vuoi arrestare.Utilizza
kubectl
per modificare la VM:kubectl edit gvm VM_NAME
Sostituisci
VM_NAME
con il nome della VM che vuoi modificare.Nell'editor, aggiorna le impostazioni di configurazione di rete che vuoi modificare.
Ad esempio, il seguente manifest
VirtualMachine
di esempio mostra che la VM si connette a una rete denominatabackend-vlan100
e utilizza DHCP poiché non è definito alcun indirizzo IP:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: backend-vlan100 default: true ...
Se vuoi modificare la rete a cui si connette la VM o assegnare un indirizzo IP manuale, aggiorna la configurazione di rete nell'editor, come mostrato nell'esempio seguente:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true ...
Sostituisci
NETWORK_NAME
con il nome della rete a cui connetterti oppure aggiungi la sezioneipAddresses
e specifica l'IP_ADDRESS
da utilizzare per la VM.Salva e chiudi il manifest della VM.
Avvia la VM che hai modificato:
kubectl virt start VM_NAME
Sostituisci
VM_NAME
con il nome della VM che hai modificato.Controlla
STATUS
della tua VM:kubectl get gvm VM_NAME
Assicurati che la VM sia nello stato
Running
. Se la VM richiede una connessione di rete che l'host non può fornire, la VM non può avviarsi. Se la VM non è nello statoRunning
, controlla il manifest della risorsaVirtualMachine
e il supporto della rete host.Visualizza informazioni dettagliate su una VM utilizzando
kubectl describe gvm
:kubectl describe gvm VM_NAME
Sostituisci
VM_NAME
con il nome della VM che hai modificato.Il seguente output di esempio mostra le informazioni condensate per una VM, con una modifica alla configurazione di rete e indirizzo IP applicata correttamente:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Interfaces: Name: eth0 Network Name: backend-vlan200 ... Status: ... Interfaces: Dns Config: Nameservers: 8.8.8.8 gateway4: 10.200.0.9 Ip Addresses: 10.200.0.22/24 Mac Address: 22:b4:e3:d2:ef:fb Name: eth0 Resource Name: vm1-eth0-f2468 ...
Per saperne di più, scopri come creare e gestire reti virtuali.
Configura la VM per i riavvii automatici
Molte modifiche alla configurazione della VM, ad esempio quelle alle impostazioni di compute
,
richiedono l'arresto e il riavvio della VM per sincronizzare le modifiche
con l'istanza VM corrispondente (VirtualMachineInstance
). Le VM in esecuzione in
cluster versione 1.13.0 o successive possono essere configurate per il riavvio
automatico ogni volta che apporti modifiche alla loro configurazione. Quando configuri una VM per utilizzare questa funzionalità, non è necessario arrestare e riavviare una VM quando modifichi la relativa risorsa personalizzata. VM Runtime su GDC monitora la VM e, se rileva una modifica alla configurazione, la riavvia automaticamente per sincronizzare le modifiche.
Questa funzionalità è particolarmente utile se utilizzi Config Sync per gestire i file di configurazione YAML. Senza questa funzionalità, devi arrestare manualmente la VM prima di apportare modifiche alla risorsa personalizzata VirtualMachine
e avviare manualmente la VM dopo aver completato le modifiche.
Per attivare i riavvii automatici:
Utilizza
kubectl
per modificare la VM:kubectl edit gvm VM_NAME
Nell'editor, aggiungi il campo
autoRestartOnConfigurationChange
e impostalo sutrue
.Puoi apportare ulteriori modifiche alla VM, ad esempio aggiornare il valore di
vcpus
. Se modifichi le impostazioni dicompute
, VM Runtime su GDC riavvia automaticamente la VM quando salvi le modifiche.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: ... name: vm-sample-01 namespace: default resourceVersion: "16711824" uid: ed623879-0cfa-52de-ad2c-b63308e6116c spec: autoRestartOnConfigurationChange: true compute: cpu: vcpus: 2 ...
Salva e chiudi il manifest della VM.
Se hai apportato altre modifiche alla VM che devono essere sincronizzate con l'istanza VM corrispondente, VM Runtime su GDC riavvia la VM. Se hai apportato la modifica solo per attivare i riavvii automatici, non è necessario riavviare la VM.
Controlla
status
della tua VM:kubectl get gvm VM_NAME
A seconda della velocità con cui ottieni la VM, potresti visualizzare
state: Starting
durante il riavvio della VM. Quando la VM è stata riavviata correttamente, viene visualizzatostate: Running
. Le modifiche alla configurazione successive alla risorsa personalizzataVirtualMachine
non richiedono l'arresto e l'avvio manuale della VM. Le modifiche successive alla risorsa personalizzata vengono riflesse in modo coerente nell'istanza VM.
Tieni presente il seguente comportamento delle funzionalità contestuali:
Se arresti una VM manualmente prima di modificare la risorsa personalizzata
VirtualMachine
, la modifica della configurazione non attiva un riavvio. Lo stato arrestato della VM prima della modifica della configurazione viene mantenuto.Se hai apportato modifiche all'etichetta o alla pianificazione per la VM prima di attivare la funzionalità di riavvio automatico, l'aggiunta di
autoRestartOnConfigurationChange
ora senza altre modifiche non attiva un riavvio. Idealmente, questa funzionalità mantiene l'istanza VM coerente con la configurazione della VM. Tuttavia, VM Runtime su GDC non può rilevare le incoerenze precedenti.