Ridurre al minimo il tempo di avvio della VM

Se vuoi che le VM si avvino il più rapidamente possibile, riduci al minimo il tempo di avvio della macchina virtuale (VM) seguendo le istruzioni riportate in questa pagina. La riduzione al minimo del tempo di avvio comporta un costo in termini di efficienza delle risorse: il progetto consuma risorse aggiuntive e ha una superficie di sicurezza maggiore.

Questo documento è destinato agli sviluppatori dei gruppi di amministratori della piattaforma o operatori delle applicazioni che configurano il tempo di avvio delle istanze VM in un ambiente Distributed Cloud. Per saperne di più, consulta Pubblico per la documentazione di GDC con air gap.

Prima di iniziare

Per utilizzare i comandi dell'interfaccia a riga di comando (CLI) gdcloud, assicurati di aver scaricato, installato, e configurato la gdcloud CLI. Tutti i comandi per Distributed Cloud utilizzano la CLI gdcloud o kubectl e richiedono un ambiente di sistema operativo (OS).

Recupera il percorso del file kubeconfig

Per eseguire i comandi sul server API di gestione, assicurati di disporre delle seguenti risorse:

  1. Accedi e genera il file kubeconfig per il server API di gestione, se non ne hai uno.

  2. Utilizza il percorso del file kubeconfig del server API di gestione per sostituire MANAGEMENT_API_SERVER in queste istruzioni.

Richiedi i ruoli IAM

Per ridurre al minimo il tempo di avvio della VM, contatta l'amministratore IAM del progetto per richiedere il ruolo Amministratore del progetto della macchina virtuale (project-vm-admin).

Tutti i ruoli VM devono essere associati allo spazio dei nomi del progetto in cui risiede la VM. Segui i passaggi per verificare l'accesso.

Mantieni attive le connessioni ai dischi

Quando una VM si avvia, l'avvio di una connessione dal nodo della VM al disco della VM richiede alcuni secondi. Per velocizzare l'avvio della VM, la connessione al disco deve essere mantenuta attiva quando la VM viene arrestata, in modo che non venga riavviata agli avvii successivi della VM. Per farlo, quando esegui il comando per attivare il keep-alive della connessione al disco, il sistema crea automaticamente un pod fittizio che monta tutti i dischi della VM.

Attiva il keep-alive della connessione al disco

Per mantenere attive le connessioni ai dischi per una VM denominata VM_NAME nel progetto PROJECT, esegui il comando seguente. In questo modo, il sistema crea automaticamente il pod fittizio:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
  --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/enable-connection-keep-alive: "true"
'

Sostituisci le variabili in queste istruzioni utilizzando le seguenti definizioni.

VariabileDefinizione
MANAGEMENT_API_SERVER Il file kubeconfig del server API di gestione.
VM_NAME Il nome della VM.
PROJECT Il progetto GDC in cui risiede la VM.

Quando il keep-alive della connessione al disco è abilitato, nel progetto viene creato un pod denominato disk-connection-keep-alive-VM_NAME. Il riavvio successivo della VM è più veloce, così come i tempi di avvio successivi, perché le connessioni al disco della VM vengono mantenute attive dal pod.

Configura l'affinità del keep-alive della connessione al disco

Quando la VM viene riavviata, lo scheduler di Kubernetes potrebbe selezionare un nodo diverso per la VM. Per ridurre le probabilità che ciò accada, configura una regola di affinità tra VM tra la VM e il pod keep-alive. Configura questa operazione in modo che avvenga automaticamente:

kubectl --kubeconfig MANAGEMENT_API_SERVER \
  -n PROJECT \
  patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
  --type merge --patch $'
metadata:
  annotations:
    disk.virtualmachine.gdc.goog/add-connection-keep-alive-affinity: "true"
'

In questo modo, alla VM viene aggiunta un'impostazione di affinità preferita per il pod keep-alive.

Precisazioni

Per mantenere attive le connessioni ai dischi, occorre fare due precisazioni:

  • Il pod keep-alive comporta un utilizzo aggiuntivo delle risorse:
    • Viene conteggiato nel limite del numero di pod per nodo.
    • Utilizza un indirizzo IP aggiuntivo assegnato da Kubernetes.
    • Utilizza una quantità aggiuntiva trascurabile di CPU e memoria.
  • La superficie di sicurezza aumenta, perché il nodo in cui è presente il pod keep-alive ha sempre collegati i dischi della VM, anche quando la VM è arrestata.

Utilizza il firmware BIOS

In GDC, l'avvio di una VM con firmware Unified Extensible Firmware Interface (UEFI) è più lento dell'avvio di una VM con firmware BIOS.

  1. Per assicurarti che il tempo di avvio sia minimo, imposta il tipo di firmware della VM su BIOS:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
      -n PROJECT \
      patch virtualmachines.virtualmachine.gdc.goog VM_NAME \
      -type merge --patch $'
    spec:
      firmware:
        type: bios
        enableSecureBoot:
    '
    
  2. Se la VM è in esecuzione, riavviala seguendo le istruzioni per riavviare la VM.

Precisazioni

L'unico inconveniente dell'utilizzo del firmware BIOS è che non supporta l'avvio protetto.

Utilizza un disco di avvio di grandi dimensioni

Per ridurre al minimo il tempo di avvio della VM, collega alla VM un disco di avvio di dimensioni pari o superiori a 500 GB.