Modifica la configurazione delle VM nel runtime VM su Google Distributed Cloud

Questo documento è destinato ai proprietari di applicazioni che utilizzano il runtime VM su Google Distributed Cloud per eseguire macchine virtuali (VM) in GKE su Bare Metal. Questo documento mostra come modificare le VM in esecuzione nei cluster GKE. 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 in stato Stopped prima di modificare la risorsa. Tuttavia, a partire da GKE su Bare Metal versione 1.13.0, puoi configurare la tua risorsa VirtualMachine in modo che si riavvii automaticamente ogni volta che modifichi la configurazione.

Se le modifiche apportate 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 le modifiche, utilizza il comando kubectl describe gvm VM_NAME per visualizzare le informazioni sulla risoluzione dei problemi e correggere gli errori.

Prima di iniziare

Per completare questo documento, devi avere accesso alle seguenti risorse:

Modifica risorse di computing

Se il carico di lavoro di computing cambia, puoi aggiornare il numero di CPU virtuali e la quantità di memoria virtuale assegnata alle VM. Per modificare i carichi di lavoro di computing, completa questi passaggi:

  1. Arresta la VM che vuoi modificare:

    kubectl virt stop VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che vuoi arrestare.

  2. Utilizza kubectl per modificare la VM:

    kubectl edit gvm VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che vuoi modificare.

  3. Nell'editor, aggiorna i valori delle risorse di computing che vuoi modificare.

    Ad esempio, il seguente manifest VirtualMachine di esempio mostra che alla risorsa VM sono state assegnate 2 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
    ...
    
  4. Salva e chiudi il manifest della VM.

  5. Avvia la VM che hai modificato:

    kubectl virt start VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che hai modificato.

  6. Controlla il STATUS della tua VM:

    kubectl get gvm VM_NAME
    

    Assicurati che la tua VM sia in stato Running. Se la tua VM richiede più risorse di calcolo di quelle che può fornire l'host, la VM non può essere avviata. Se la VM non è in stato Running, controlla il manifest della risorsa VirtualMachine e la disponibilità della risorsa di computing sull'host.

    Il seguente output di esempio mostra la VM in stato Running:

    NAME   STATUS    AGE   IP
    vm1    Running   1m    192.168.2.72
    
  7. 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 ridotte di una VM, con una modifica del 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 ulteriori informazioni, scopri come creare VM con configurazioni di calcolo di vCPU e memoria specifiche.

Modifica risorse disco

Se i requisiti di archiviazione cambiano, puoi aggiungere o rimuovere dischi virtuali da una VM. Per modificare i dischi collegati alla VM, completa i seguenti passaggi:

  1. Arresta la VM che vuoi modificare:

    kubectl virt stop VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che vuoi arrestare.

  2. Utilizza kubectl per modificare la VM:

    kubectl edit gvm VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che vuoi modificare.

  3. 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.

  4. Salva e chiudi il manifest della VM.

  5. Avvia la VM che hai modificato:

    kubectl virt start VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che hai modificato.

  6. Controlla il STATUS della tua VM:

    kubectl get gvm VM_NAME
    

    Assicurati che la tua VM sia in stato Running. Se la tua VM richiede un'assegnazione StorageClass o un disco che l'host non è in grado di fornire, la VM non può avviarsi. Se la VM non è in stato Running, controlla i manifest delle risorse VirtualMachine e VirtualMachineDisk e il supporto dello spazio di archiviazione host.

  7. 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 ridotte di 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 ulteriori informazioni, scopri come creare e gestire i dischi.

Modifica risorse di rete

Quando l'infrastruttura cambia, potresti voler modificare la configurazione di rete per 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 per una VM, completa i seguenti passaggi:

  1. Arresta la VM che vuoi modificare:

    kubectl virt stop VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che vuoi arrestare.

  2. Utilizza kubectl per modificare la VM:

    kubectl edit gvm VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che vuoi modificare.

  3. 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 denominata backend-vlan100 e utilizza DHCP perché non è stato 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 sezione ipAddresses e specifica IP_ADDRESS la VM da utilizzare.

  4. Salva e chiudi il manifest della VM.

  5. Avvia la VM che hai modificato:

    kubectl virt start VM_NAME
    

    Sostituisci VM_NAME con il nome della VM che hai modificato.

  6. Controlla il STATUS della tua VM:

    kubectl get gvm VM_NAME
    

    Assicurati che la tua VM sia in stato Running. Se la tua VM richiede una connessione di rete che l'host non è in grado di fornire, la VM non può essere avviata. Se la VM non è in stato Running, controlla il manifest della tua risorsa VirtualMachine e il supporto della rete host.

  7. 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 ridotte 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 ulteriori informazioni, scopri come creare e gestire reti virtuali.

Configura la VM per i riavvii automatici

Molte modifiche alla configurazione della VM, ad esempio le modifiche alle impostazioni compute, richiedono l'arresto e il riavvio della VM affinché le modifiche vengano sincronizzate con l'istanza VM corrispondente (VirtualMachineInstance). Le VM in esecuzione in GKE su Bare Metal versione 1.13.0 o successive possono essere configurate per il riavvio automatico ogni volta che modifichi la configurazione. Quando configuri una VM per l'utilizzo di questa funzionalità, non è necessario arrestare e riavviare una VM quando ne modifichi la risorsa personalizzata. Il runtime VM su Google Distributed Cloud monitora la VM e, se rileva una modifica alla configurazione, la riavvia automaticamente per sincronizzare le modifiche.

Se usi Config Management per gestire i file di configurazione YAML, questa funzionalità è particolarmente utile. 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:

  1. Utilizza kubectl per modificare la VM:

    kubectl edit gvm VM_NAME
    
  2. Nell'editor, aggiungi il campo autoRestartOnConfigurationChange e impostalo su true.

    Puoi apportare ulteriori modifiche alla VM, ad esempio aggiornare il valore vcpus. Se modifichi le impostazioni compute, VM Runtime su Google Distributed Cloud 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
          ...
    
  3. 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 Google Distributed Cloud riavvia la VM. Se hai apportato solo la modifica per abilitare i riavvii automatici, non è necessario riavviare la VM.

  4. Controlla il status della tua VM:

    kubectl get gvm VM_NAME
    

    A seconda della velocità con cui raggiungi la VM, potresti visualizzare state: Starting durante il riavvio della VM. Una volta riavviata la VM, vedrai state: Running. Le successive modifiche alla configurazione alla risorsa personalizzata VirtualMachine non richiedono l'arresto e l'avvio della VM manualmente. Le modifiche successive alla risorsa personalizzata si riflettono in modo coerente nell'istanza VM.

Tieni presente il seguente comportamento delle funzionalità situali:

  • 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 abilitare 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 VM. Tuttavia, il runtime VM su Google Distributed Cloud non è in grado di rilevare incoerenze precedenti.

Passaggi successivi