Il runtime VM su GDC ti consente di modificare le configurazioni delle macchine virtuali (VM), come le risorse di computing, i dischi collegati e le impostazioni della rete, in base alle esigenze del workload.
Puoi aggiornare qualsiasi campo nella sezione spec di una risorsa VirtualMachine
e modificare le etichette della VM, ma altri campi, come il nome della VM (metadata.name),
non possono essere modificati. Per impostazione predefinita, una VM deve essere in stato Stopped prima di poterla modificare. Puoi configurare la VM in modo che venga riavviata automaticamente quando la sua configurazione cambia.
Prima di iniziare
Per completare questo documento, devi avere accesso alle seguenti risorse:
- Una VM eseguita in uno dei tuoi cluster. Se necessario, crea una VM in un cluster bare metal.
- Lo strumento client
virtctlinstallato come plug-in perkubectl. Se necessario, installa lo strumento client virtctl.
Modifica risorse di computing
Se le esigenze del tuo workload di computing cambiano, puoi aggiornare il numero di CPU virtuali e la quantità di memoria virtuale che assegni alle VM. Per modificare i workload di computing, completa i seguenti passaggi:
Arresta la VM che vuoi modificare:
kubectl virt stop VM_NAMESostituisci
VM_NAMEcon il nome della VM che vuoi arrestare.Utilizza
kubectlper modificare la VM:kubectl edit gvm VM_NAMESostituisci
VM_NAMEcon il nome della VM che vuoi modificare.Nell'editor, aggiorna i valori delle risorse di computing che vuoi modificare.
Ad esempio, il seguente manifest
VirtualMachinedi esempio mostra che alla risorsa VM sono assegnate2vCPU: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_NAMESostituisci
VM_NAMEcon il nome della VM che hai modificato.Controlla il
STATUSdella tua VM:kubectl get gvm VM_NAMEAssicurati che la VM sia in stato
Running. Se la VM richiede più risorse di computing di quelle che l'host può fornire, la VM non può avviarsi. Se la VM non è in statoRunning, controlla il manifest della risorsaVirtualMachinee la disponibilità delle risorse di computing sull'host.L'output di esempio seguente mostra la VM in stato
Running:NAME STATUS AGE IP vm1 Running 1m 192.168.2.72Visualizza informazioni dettagliate su una VM utilizzando
kubectl describe gvm:kubectl describe gvm VM_NAMESostituisci
VM_NAMEcon 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ù, consulta come creare VM con configurazioni di calcolo di vCPU e memoria specifiche.
Modifica le risorse disco
Se i tuoi requisiti 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_NAMESostituisci
VM_NAMEcon il nome della VM che vuoi arrestare.Utilizza
kubectlper modificare la VM:kubectl edit gvm VM_NAMESostituisci
VM_NAMEcon il nome della VM che vuoi modificare.Nell'editor, aggiorna la sezione
spec.disksper collegare o scollegare i dischi.Ad esempio, il seguente manifest
VirtualMachinedi 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_NAMEcon il nome del disco da collegare.Salva e chiudi il manifest della VM.
Avvia la VM che hai modificato:
kubectl virt start VM_NAMESostituisci
VM_NAMEcon il nome della VM che hai modificato.Controlla il
STATUSdella tua VM:kubectl get gvm VM_NAMEAssicurati che la VM sia in stato
Running. Se la VM richiede un'assegnazione diStorageClasso di disco che l'host non può fornire, la VM non può avviarsi. Se la VM non è in statoRunning, controlla i manifest delle risorseVirtualMachineeVirtualMachineDiske il supporto dello spazio di archiviazione dell'host.Visualizza informazioni dettagliate su una VM utilizzando
kubectl describe gvm:kubectl describe gvm VM_NAMESostituisci
VM_NAMEcon 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ù, consulta come creare e gestire i dischi.
Modifica 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_NAMESostituisci
VM_NAMEcon il nome della VM che vuoi arrestare.Utilizza
kubectlper modificare la VM:kubectl edit gvm VM_NAMESostituisci
VM_NAMEcon il nome della VM che vuoi modificare.Nell'editor, aggiorna le impostazioni di configurazione di rete che vuoi modificare.
Ad esempio, il seguente manifest
VirtualMachinedi esempio mostra che la VM si connette a una rete denominatabackend-vlan100e 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_NAMEcon il nome della rete a cui connetterti o aggiungi la sezioneipAddressese specifica laIP_ADDRESSche la VM deve utilizzare.Salva e chiudi il manifest della VM.
Avvia la VM che hai modificato:
kubectl virt start VM_NAMESostituisci
VM_NAMEcon il nome della VM che hai modificato.Controlla il
STATUSdella tua VM:kubectl get gvm VM_NAMEAssicurati che la VM sia in 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 è in statoRunning, controlla il manifest della risorsaVirtualMachinee il supporto della rete host.Visualizza informazioni dettagliate su una VM utilizzando
kubectl describe gvm:kubectl describe gvm VM_NAMESostituisci
VM_NAMEcon il nome della VM che hai modificato.L'output di esempio seguente mostra le informazioni condensate per una VM, con una modifica alla configurazione della rete e dell'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ù, consulta la pagina su come creare e gestire reti virtuali.
Configura la VM per i riavvii automatici
Molte modifiche alla configurazione delle VM, ad esempio le modifiche alle impostazioni di compute,
richiedono l'arresto e il riavvio della VM affinché le modifiche vengano sincronizzate
con l'istanza VM corrispondente (VirtualMachineInstance). Le VM in esecuzione nei cluster
della 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 arrestarla e riavviarla quando
modifichi la sua risorsa personalizzata. VM Runtime on 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
la VM manualmente prima di apportare modifiche alla risorsa personalizzata VirtualMachine
e avviarla manualmente dopo aver completato le modifiche.
Per attivare i riavvii automatici:
Utilizza
kubectlper modificare la VM:kubectl edit gvm VM_NAMENell'editor, aggiungi il campo
autoRestartOnConfigurationChangee impostalo sutrue.Puoi apportare ulteriori modifiche alla VM, ad esempio aggiornare il valore
vcpus. Se modifichi le impostazioni dicompute, VM Runtime on 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 on GDC riavvia la VM. Se hai apportato la modifica solo per attivare i riavvii automatici, non è necessario riavviare la VM.
Controlla il
statusdella tua VM:kubectl get gvm VM_NAMEA seconda della velocità con cui ottieni la VM, potresti visualizzare
state: Startingdurante il riavvio della VM. Quando la VM è stata riavviata correttamente, viene visualizzatostate: Running. Le successive modifiche alla configurazione della risorsa personalizzataVirtualMachinenon richiedono l'arresto e l'avvio manuale della VM. Le modifiche successive alla risorsa personalizzata vengono applicate all'istanza VM in modo coerente.
Tieni presente il seguente comportamento della funzionalità in base alla situazione:
Se arresti manualmente una VM prima di modificare la risorsa personalizzata
VirtualMachine, la modifica della configurazione non attiva un riavvio. Lo stato di arresto della VM prima della modifica della configurazione viene mantenuto.Se hai apportato modifiche alle etichette o alla pianificazione della VM prima di attivare la funzionalità di riavvio automatico, l'aggiunta di
autoRestartOnConfigurationChangeora senza altre modifiche non attiva un riavvio. Idealmente, questa funzionalità mantiene l'istanza VM coerente con la configurazione della VM. Tuttavia, VM Runtime on GDC non è in grado di rilevare incoerenze precedenti.
Risolvi i problemi relativi alle modifiche delle VM
Se le modifiche alla risorsa VirtualMachine contengono errori quando le salvi, vengono rifiutate e viene visualizzata una notifica. Correggi gli errori e riprova a salvare la risorsa VirtualMachine. Se la VM non si avvia dopo aver apportato le modifiche, utilizza il comando kubectl describe gvm VM_NAME per visualizzare le informazioni per la risoluzione dei problemi e correggere gli errori.