Avvia e arresta una VM

Questo documento spiega come avviare, arrestare e riavviare un'istanza di macchina virtuale (VM) in Google Distributed Cloud (GDC) air-gapped.

Puoi arrestare, avviare e riavviare le VM per supportare il ciclo di vita delle tue applicazioni. Ad esempio, potresti voler modificare il numero di unità di elaborazione centralizzate virtuali (vCPU) assegnate o la quantità di memoria allocata a una VM. Prima di modificare la configurazione, devi arrestare la VM. Al termine, devi eseguire il ciclo dello stato di alimentazione per applicare le modifiche.

Questo documento è destinato agli sviluppatori dei gruppi di amministratori della piattaforma o operatori delle applicazioni che devono avviare, arrestare e riavviare le istanze VM in un ambiente Distributed Cloud. Per saperne di più, consulta la sezione Pubblico della 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.

Se vuoi ridurre al minimo il tempo di avvio della VM, segui le istruzioni riportate in Ridurre al minimo il tempo di avvio della VM prima di avviare la VM.

Richiedi i ruoli IAM

Contatta l'amministratore IAM del progetto per richiedere i seguenti ruoli nel progetto:

  • Amministratore del progetto di macchine virtuali (project-vm-admin): crea, modifica, elenca ed elimina le VM nello spazio dei nomi del progetto.

  • Visualizzatore progetto(project-viewer): visualizza tutte le risorse all'interno degli spazi dei nomi del progetto.

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.

Arresta una VM

Quando arresti una macchina virtuale (VM), l'hypervisor dealloca tutte le risorse associate all'istanza. La VM viene arrestata.

Arresta una VM in stato di esecuzione utilizzando la console GDC o kubectl.

Console

  1. Nel menu di navigazione, fai clic su Macchine virtuali > Istanze.

  2. Nell'elenco delle VM, seleziona la casella di controllo per la VM in esecuzione che vuoi arrestare.

  3. Fai clic su Arresta.

  4. Nella finestra di dialogo di conferma, fai clic su Arresta.

gdcloud

Per arrestare una VM:

gdcloud compute instances stop VM_NAME \
  --project PROJECT
  • Sostituisci VM_NAME con il nome della VM.
  • Sostituisci PROJECT con il nome del progetto GDC in cui si trova la VM.

kubectl

  1. Esegui questo comando:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
       -n PROJECT \
       edit virtualmachines.virtualmachine.gdc.goog VM_NAME
    
  2. Cerca il campo runningState nello spec della VM e modifica il valore del campo in Stopped. Se runningState non è presente nello spec, aggiungilo e imposta il valore su Stopped.runningStatespec

    spec:
       runningState: Stopped
    
  3. Verifica lo stato della VM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
       -n PROJECT \
       get virtualmachines.virtualmachine.gdc.goog VM_NAME
    

    Utilizza queste definizioni per le variabili precedenti.

    VariabileDefinizione
    MANAGEMENT_API_SERVER_KUBECONFIGIl file kubeconfig del server API di gestione.
    VM_NAMEIl nome della VM.
    PROJECTIl nome del progetto della VM.

Avvia una VM

Avvia una VM dallo stato di arresto utilizzando la console o kubectl.

Console

  1. Nel menu di navigazione, fai clic su Macchine virtuali > Istanze.

  2. Nell'elenco delle VM, seleziona la casella di controllo per la VM arrestata che vuoi avviare.

  3. Fai clic su Avvia.

  4. Nella finestra di dialogo di conferma, fai clic su Avvia.

gdcloud

Per avviare una VM:

gdcloud compute instances start VM_NAME --project PROJECT
  • Sostituisci VM_NAME con il nome della VM.
  • Sostituisci PROJECT con il nome del progetto GDC in cui si trova la VM.

kubectl

  1. Esegui questo comando:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      -n PROJECT \
      edit virtualmachines.virtualmachine.gdc.goog VM_NAME
    
  2. Cerca il campo runningState nello spec della VM e modifica il valore del campo in Running.

    spec:
       runningState: Running
    
  3. Verifica lo stato della VM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      -n PROJECT \
      get virtualmachines.virtualmachine.gdc.goog VM_NAME
    

    Utilizza queste definizioni per le variabili nel codice di esempio.

    VariabileDefinizione
    MANAGEMENT_API_SERVER_KUBECONFIGIl file kubeconfig del server API di gestione.
    MANAGEMENT_API_SERVER_NAMEIl nome del server API di gestione.
    VM_NAMEIl nome della VM.
    PROJECTIl nome del progetto della VM.

Riavvia una VM

Quando riavvii una VM, la macchina viene reimpostata allo stato iniziale e i contenuti della memoria della macchina vengono cancellati.

Riavvia una VM in stato di esecuzione utilizzando la console o kubectl.

Console

  1. Nel menu di navigazione, fai clic su Macchine virtuali > Istanze.

  2. Nell'elenco delle VM, seleziona la casella di controllo per la VM in esecuzione che vuoi riavviare.

  3. Fai clic su Reimposta.

  4. Nella finestra di dialogo di conferma, fai clic su Reimposta.

gdcloud

Per reimpostare una VM:

gdcloud compute instances reset VM_NAME --project PROJECT
  • Sostituisci VM_NAME con il nome della VM.
  • Sostituisci PROJECT con il nome del progetto GDC in cui si trova la VM.

kubectl

  1. Recupera i dati del certificato e della chiave del client e il server API di gestione. Utilizza questi valori nei passaggi seguenti:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      config view --raw -o \
      jsonpath='{.users[?(@.name =="MANAGEMENT_API_SERVER_NAME-admin")].user.client-certificate-data}' \
      | base64 -d > cert
    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      config view --raw -o \
      jsonpath='{.users[?(@.name == "MANAGEMENT_API_SERVER_NAME-admin")].user.client-key-data}' \
      | base64 -d > key
    export APISERVER=`kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
       config view --raw -o \
       jsonpath='{.clusters[?(@.name == "MANAGEMENT_API_SERVER_NAME")].cluster.server}'`
    
  2. Crea una richiesta API per riavviare la VM utilizzando il comando wget e specifica il certificato e la chiave del passaggio precedente:

    wget --method=PUT -O- \
      --no-check-certificate \
      --certificate cert \
      --private-key key \
      --content-on-error=on \
      $APISERVER/apis/virtualmachineoperations.gdc.goog/v1/namespaces/PROJECT/virtualmachines/VM_NAME/restart
    
  3. Verifica lo stato della VM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      -n PROJECT \
      get virtualmachines.virtualmachine.gdc.goog VM_NAME
    

    Utilizza queste definizioni per le variabili nel codice di esempio.

    VariabileDefinizione
    MANAGEMENT_API_SERVER_KUBECONFIGIl file kubeconfig del server API di gestione.
    MANAGEMENT_API_SERVER_NAMEIl nome del server API di gestione.
    VM_NAMEIl nome della VM.
    PROJECTIl nome del progetto della VM.