Abilita o disabilita il runtime VM su GDC

Questo documento mostra come abilitare o disabilitare il runtime VM su Google Distributed Cloud aggiornando la risorsa personalizzata VMRuntime o eseguendo i comandi bmctl.

Prima di iniziare

Per abilitare o disabilitare il runtime VM su GDC, devi accedere al le seguenti risorse e strumenti:

Abilita runtime VM su GDC

Il runtime VM su GDC viene installato automaticamente in Google Distributed Cloud versione 1.10 o successive, ma questa funzionalità è disattivata per impostazione predefinita. Prima di poter eseguire la VM in Google Distributed Cloud, devi abilitare Runtime VM su GDC.

Bmctl

  • Per attivare il runtime, usa lo strumento bmctl:

    bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
    

    Fornisci il percorso del file kubeconfig per il tuo cluster. Google Distributed Cloud genera il file kubeconfig sul quando crei un cluster. Per impostazione predefinita, il percorso è bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.

    Se il runtime VM su GDC è già abilitato, il comando restituisce un .

È possibile configurare impostazioni aggiuntive, ad esempio per l'emulazione o il formato dell'immagine modificando la risorsa personalizzata VMRuntime.

Risorsa personalizzata

Per abilitare il runtime, aggiorna la risorsa personalizzata VMRuntime. Questo personalizzato e la risorsa è installata per impostazione predefinita.

  1. Modifica la risorsa personalizzata VMRuntime:

    kubectl edit vmruntime
    
  2. Imposta enabled:true nella specifica:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      # useEmulation defaults to "false" if not set.
      useEmulation: true
      # vmImageFormat defaults to "qcow2" if not set.
      vmImageFormat: qcow2
    

    Nella sezione spec precedente, è possibile impostare i seguenti valori:

    • enabled: impostato su true per abilitare il runtime VM su GDC
    • useEmulation: se il tuo nodo non supporta la virtualizzazione hardware oppure non sei sicuro, imposta il valore su true. Se disponibile, hardware la virtualizzazione offre prestazioni migliori rispetto all'emulazione software. La Il valore predefinito del campo useEmulation è false, se non è specificato.
    • vmImageFormat: supporta due valori di formato dell'immagine disco: raw e qcow2. Se non imposti vmImageFormat, il valore Il runtime VM su GDC utilizza il formato dell'immagine disco raw per creare delle VM in esecuzione. Il formato raw potrebbe fornire un rendimento migliore rispetto a qcow2, un copia in formato di scrittura, ma può utilizzare più disco. Per ulteriori informazioni i formati dell'immagine per la tua VM, Formati file immagine disco nella documentazione di QEMU.
  3. Salva la risorsa personalizzata nell'editor.

  4. Verifica che la risorsa personalizzata VMRuntime sia abilitata:

    kubectl describe vmruntime vmruntime
    

    I dettagli della risorsa personalizzata VMRuntime includono una sezione Status. Il runtime VM su GDC è abilitato e funziona quando VMRuntime.Status.Ready viene visualizzato come true.

Disabilita il runtime VM su GDC

Quando non devi più utilizzare il runtime VM su GDC, puoi disabilitare questa funzionalità.

Bmctl

  • Per disattivare il runtime, utilizza lo strumento bmctl:

    bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \
      --force=true
    

    Indica il percorso del file kubeconfig per il cluster e i valori per le seguenti opzioni di configurazione:

    • --force: imposta su true per confermare che vuoi eliminare la VM esistente Google Cloud. Il valore predefinito è false.

Risorsa personalizzata

Per disabilitare il runtime, aggiorna la risorsa personalizzata VMRuntime:

  1. Modifica la risorsa personalizzata VMRuntime:

    kubectl edit vmruntime
    
  2. Imposta enabled:false nella specifica:

    apiVersion: vm.cluster.gke.io/v1`
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: false
      useEmulation: true
      vmImageFormat: qcow2
    
  3. Salva la specifica della risorsa personalizzata aggiornata nell'editor.

  4. Per verificare che la risorsa personalizzata VMRuntime sia disabilitata, visualizza il pod in esecuzione nello spazio dei nomi vm-system:

    kubectl get pods --namespace vm-system
    

    Il runtime VM su GDC è disabilitato quando solo i pod appartengono al deployment vmruntime-controller-manager in esecuzione lo spazio dei nomi.

Comprendi il comportamento delle VM in esecuzione

L'baremetal.cluster.gke.io/vmrumtime-force-disableannotazione può essere utilizzata su runtime VM sulla risorsa GDC per definire il comportamento quando il runtime viene è disabilitata mentre le VM sono in esecuzione nel cluster.

L'esempio seguente mostra che il valore di questa annotazione è impostato su false per impostazione predefinita:

// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
  annotations:
    baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
  name: vmruntime
[...]

Se questa annotazione è impostata su false, il runtime VM su GDC tenta di per proteggere le VM in esecuzione. Elimina tutte le VM in esecuzione prima Il runtime VM su GDC è disabilitato oppure specifica --force=true con il comando bmctl disable vmruntime come mostrato nella precedente .

La tabella seguente spiega cosa succede alle VM in esecuzione quando questa annotazione sia impostato su true o false e se specifichi il parametro --force=true oppure non:

Stato del cluster --force parametro annotazione vmrumtime-force-disable Comportamento
Nessuna VM N/D N/D Disabilita il runtime VM su GDC.
VM esistenti Vero Vero Elimina tutte le VM in esecuzione e le risorse correlate. Disattiva il Runtime VM su GDC.
Vero Falso Elimina tutte le VM in esecuzione e le risorse correlate. Disattiva il Runtime VM su GDC.
Falso Vero Richiesta di eliminazione delle VM in esecuzione e delle risorse correlate. Quando tutti sono in esecuzione Le VM sono state eliminate. Disabilita il runtime VM su GDC.
Falso Falso Non eliminare le VM esistenti in esecuzione. Non disattivare il Runtime VM su GDC. Il comando bmctl restituisce un .

Controllo preflight GDC per runtime VM su GDC

Il controllo preflight del runtime VM su GDC convalida un insieme di prerequisiti nell'ambiente della macchina prima di utilizzare Runtime VM su GDC e VM. La creazione di VM è bloccata se Controllo preflight GDC per il runtime della VM non riuscito. La Il controllo preflight GDC del runtime VM viene eseguito automaticamente quando spec.enabled è impostato su true.

kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH

Il controllo preflight del runtime VM su GDC viene eseguito quando esegui uno qualsiasi di le seguenti operazioni:

  1. Abilita runtime VM su GDC

  2. Abilita il runtime VM nelle funzionalità di GDC, ad esempio useEmulation

  3. Esegui l'upgrade dei cluster

  4. Rimuovi l'etichetta kubevm.io/VM-SkipSchedule in corrispondenza dei nodi

  5. Crea in modo indipendente il runtime VM sull'oggetto controllo preflight GDC eseguendo il comando bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH o applicando Manifest YAML VMRuntimePreflightCheck.

Puoi avviare le VM quando viene eseguito l'ultimo controllo preflight del runtime VM su GDC . Se il controllo preflight non va a buon fine, la creazione delle VM viene bloccata e ricevi errori del controllo preflight.

Verifica dell'esito positivo del controllo preflight

Per verificare se i controlli preflight sono riusciti, esegui questi comandi:

  1. Trova gli ultimi controlli preflight eseguiti:

    kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATH
    

    L'output dovrebbe essere simile all'esempio seguente:

    NAME                                                             PASS    AGE
    vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e   false   42s
    vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5   true    21s
    
  2. Per trovare lo stato di un controllo preflight, esegui questo comando:

    kubectl get vmruntime vmruntime -o yaml --kubeconfig KUBECONFIG_PATH
    
    ...
      preflightCheckSummary:
      preflightCheckSummary:
        featureStatuses:
          CPU:
            passed: true
          KVM:
            passed: true
        preflightCheckName: vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5
        preflightCheckPassed: true
    ...
    

Il debug del controllo preflight non va a buon fine

Se il controllo preflight ha esito negativo, esegui questi passaggi per eseguire il debug:

  1. Trova gli ultimi controlli preflight eseguiti.

    kubectl get vmruntimepfc -n vm-system
    
  2. Controlla lo stato del controllo preflight per i dettagli.

    kubectl get vmruntimepfc -n vm-system \
        vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e -o yaml \
        --kubeconfig KUBECONFIG_PATH
    
    ...
    status:
    checks:
      worker-0--52229ee15841099-22c41577139a7b8c.lab.anthos:
        passed: false
        results:
        - checkName: CPU
          passed: true
        - checkName: KVM
          message: |
            command terminated with exit code 1
            ls: /mnt/dev/kvm: No such file or directory
          passed: false
    ...
    
  3. Risolvi il problema ed esegui di nuovo il controllo preflight GDC per il runtime VM. La Di seguito è riportato un esempio del manifest YAML VMRuntimePreflightCheck:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntimePreflightCheck
    metadata:
      name: vmruntime-preflight-check-manual
      namespace: vm-system
    

Passaggi successivi