Gestisci le macchine virtuali sui rack Distributed Cloud connected

Questa pagina descrive come gestire le macchine virtuali sui rack Google Distributed Cloud connected che eseguono VM Runtime su Google Distributed Cloud. Prima di completare i passaggi di questa pagina, devi avere familiarità con VM Runtime su GDC. Per un elenco dei sistemi operativi guest supportati, vedi Sistemi operativi guest verificati per VM Runtime su GDC.

I carichi di lavoro delle macchine virtuali sono supportati sull'hardware rack legacy ("Configurazione 1" e "Configurazione 2"), ma non su configurazioni hardware rack sostitutive.

Per scoprire in che modo le macchine virtuali fungono da componente essenziale della piattaforma Distributed Cloud connected, consulta Estendere GKE Enterprise per gestire le VM edge on-premise.

I cluster Google Distributed Cloud connesso supportano i webhook delle macchine virtuali. Ciò consente a Distributed Cloud connesso di convalidare le richieste degli utenti effettuate al server API Kubernetes locale. Le richieste rifiutate generano informazioni dettagliate sul motivo del rifiuto.

Abilita il supporto del runtime delle VM su GDC su Distributed Cloud connected

Per impostazione predefinita, il supporto del runtime VM sulle macchine virtuali GDC è disabilitato su Distributed Cloud connected. Per attivarla, completa i passaggi descritti in questa sezione. Le istruzioni in questa sezione presuppongono che tu disponga di un cluster Distributed Cloud connesso completamente funzionante.

  1. Modifica la risorsa personalizzata VMRuntime con i seguenti contenuti e applicala al cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      # Enable Anthos VM Runtime support
      enabled: true
      # vmImageFormat defaults to "raw" if not set
      vmImageFormat: "raw"
      # Set node grace period to 55 seconds; required for upgrading to 1.7.0
      haPolicy:
        defaultRecoveryStrategy: Reschedule
        nodeHeartbeatInterval: 15s
        nodeMonitorGracePeriod: 55s

    Non modificare il valore del parametro vmImageFormat. Distributed Cloud connesso non supporta altri formati di dischi virtuali.

    In genere, il completamento di questa procedura richiede diversi minuti.

    Non modificare il valore del parametro vmImageFormat. Distributed Cloud connesso non supporta altri formati di dischi virtuali.

    In genere, il completamento di questa procedura richiede diversi minuti.

  2. Utilizza questo comando per verificare che la risorsa personalizzata VMRuntime sia stata applicata al cluster:

    kubectl get vmruntime -o yaml

    Il comando restituisce un output simile al seguente esempio:

     - apiVersion: vm.cluster.gke.io/v1
       kind: VMRuntime
       metadata:
         name: vmruntime
         ...
       spec:
         enabled: true
         vmImageFormat: raw
       status:
         ...
       ready: true
         ...
    
  3. Utilizza il seguente comando per verificare che il supporto della macchina virtuale di VM Runtime su GDC sia stato abilitato sul cluster:

    kubectl get pods -n vm-system

    Il comando restituisce un output che mostra i pod del sottosistema VM Runtime su GDC in esecuzione sul cluster, simile al seguente esempio:

    NAME                                                READY   STATUS         RESTARTS        AGE
    cdi-apiserver-6c76c6cf7b-n68wn                      1/1     Running        0               132m
    cdi-deployment-f78fd599-vj7tv                       1/1     Running        0               132m
    cdi-operator-65c4df9647-fcb9d                       1/1     Running        0               134m
    cdi-uploadproxy-7765ffb694-6j7bf                    1/1     Running        0               132m
    macvtap-fjfjr                                       1/1     Running        0               134m
    virt-api-77dd99dbbb-bs2fb                           1/1     Running        0               132m
    virt-api-77dd99dbbb-pqc27                           1/1     Running        0               132m
    virt-controller-5b44dbbbd7-hc222                    1/1     Running        0               132m
    virt-controller-5b44dbbbd7-p8xkk                    1/1     Running        0               132m
    virt-handler-n76fs                                  1/1     Running        0               132m
    virt-operator-86565697d9-fpxqh                      2/2     Running        0               134m
    virt-operator-86565697d9-jnbt7                      2/2     Running        0               134m
    vm-controller-controller-manager-7844d5fb7b-72d8m   2/2     Running        0               134m
    vmruntime-controller-manager-845649c847-m78r9       2/2     Running        0               175m
    

Installa lo strumento di gestione virtctl

Per gestire le macchine virtuali nel cluster Distributed Cloud connesso, devi utilizzare lo strumento client virtctl. Per installare lo strumento, completa i seguenti passaggi:

  1. Installa lo strumento client virtctl come plug-in kubectl:

    export VERSION=v0.59.0-anthos1.28-gke.8
    gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl /usr/local/bin/virtctl
    cd /usr/local/bin
    sudo ln -s virtctl kubectl-virt
    sudo chmod a+x virtctl
    cd -
  2. Verifica che il plug-in virt sia installato:

    kubectl plugin list

    Se il plug-in è stato installato correttamente, l'output del comando elenca kubectl-virt tra i plug-in.

Esegui il provisioning di una macchina virtuale su Distributed Cloud connesso

Questa sezione fornisce esempi di configurazione che illustrano come eseguire il provisioning di una macchina virtuale Linux e di una macchina virtuale Windows su un cluster connesso Distributed Cloud con il livello di astrazione di Symcloud Storage.

Tieni presente che non puoi creare una macchina virtuale su un cluster connesso a Distributed Cloud direttamente utilizzando il comando kubectl virt perché Distributed Cloud Connected non fornisce spazio di archiviazione del file system alle macchine virtuali.

Prima di completare i passaggi descritti in questa sezione, devi completare i passaggi descritti in Configurare Distributed Cloud Connected per Symcloud Storage. Se in un secondo momento disattivi Symcloud Storage sul cluster, le macchine virtuali configurate per utilizzare Symcloud Storage non funzioneranno.

Esegui il provisioning di una macchina virtuale Linux su Distributed Cloud connesso

L'esempio seguente illustra come eseguire il provisioning di una macchina virtuale Linux con Symcloud Storage che esegue Ubuntu Server 22.04. L'origine dell'installazione è l'immagine disco ISO di Ubuntu Server 22.04.

  1. Crea una risorsa VirtualMachineDisk con i seguenti contenuti per l'immagine del disco di installazione di Ubuntu Server, quindi applicala al cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: ubuntu-iso-disk
    spec:
      size: 20Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
  2. Crea una risorsa VirtualMachineDisk con i seguenti contenuti per l'hard disk virtuale della macchina virtuale, quindi applicala al cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "ubuntu-main-disk"
    spec:
      size: 200Gi
      storageClassName: robin
  3. Crea una risorsa VirtualMachineType con i seguenti contenuti che specificano la configurazione della macchina virtuale, quindi applicala al tuo cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  4. Crea una risorsa VirtualMachine con i seguenti contenuti che crea un'istanza e avvia la macchina virtuale sul cluster, quindi applicala al cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: ubu-vm
      name: ubu-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Linux
      compute:
        virtualMachineTypeName: small-2-20
      interfaces:
        - name: eth0
          networkName: my-network
          default: true
      disks:
        - virtualMachineDiskName: ubuntu-main-disk
          boot: true
        - virtualMachineDiskName: ubuntu-iso-disk

    Devi anche configurare le seguenti funzionalità sul cluster:

  5. Installa Ubuntu Server sulla macchina virtuale:

    1. Attendi che il pod importer scarichi l'immagine disco di installazione di Ubuntu Server.
    2. Controlla lo stato della macchina virtuale:

      kubectl get gvm VM_NAME

      Sostituisci VM_NAME con il nome della macchina virtuale, ubu-vm in questo esempio.

    3. Accedi alla macchina virtuale utilizzando SSH o Remote Desktop.

    4. Completa i passaggi di installazione di Ubuntu Linux.

  6. Pulizia:

    1. Arresta la macchina virtuale:

      kubectl virt stop VM_NAME

      Sostituisci VM_NAME con il nome della macchina virtuale, ubu-vm in questo esempio.

    2. Modifica il file YAML della macchina virtuale per rimuovere il riferimento all'immagine disco di installazione:

      kubectl edit gvm VM_NAME

      Sostituisci VM_NAME con il nome della macchina virtuale, ubu-vm in questo esempio.

    3. Avvia la macchina virtuale:

      kubectl virt start VM_NAME

      Sostituisci VM_NAME con il nome della macchina virtuale, ubu-vm in questo esempio.

    4. Elimina la risorsa VirtualMachineDisk per l'immagine del disco di installazione:

      kubectl delete virtualmachinedisk ubuntu-iso-disk

Esegui il provisioning di una macchina virtuale Windows su Distributed Cloud connesso

L'esempio seguente illustra come eseguire il provisioning di una macchina virtuale Windows con Symcloud Storage. I passaggi sono simili al provisioning di una macchina virtuale Linux, con l'aggiunta dell'immagine disco del driver virtio, necessaria per l'installazione di Windows.

  1. Ottieni una copia con licenza di Windows e la relativa immagine del supporto di installazione.

  2. Crea una risorsa VirtualMachineDisk con i seguenti contenuti per l'immagine del disco di installazione di Windows, quindi applicala al cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-iso-disk
      namespace: default
    spec:
      size: 5Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: WINDOWS_ISO_URL

    Sostituisci NAT_GATEWAY con l'URL completo dell'immagine disco ISO dell'installazione di Windows di destinazione.

  3. Crea una risorsa VirtualMachineDisk con i seguenti contenuti per il driver virtio, quindi applicala al cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-virtio-driver
      namespace: default
    spec:
      size: 1Gi
      storageClassName: robin
      diskType: cdrom
      source:
        http:
          url: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
  4. Crea una risorsa VirtualMachineDisk con i seguenti contenuti per l'hard disk virtuale della macchina virtuale, quindi applicala al cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-main-disk
      namespace: default
    spec:
      size: 15Gi
      storageClassName: robin
  5. Crea una risorsa VirtualMachineType con i seguenti contenuti che specificano la configurazione della macchina virtuale, quindi applicala al tuo cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  6. Crea una risorsa VirtualMachine con i seguenti contenuti che crea un'istanza e avvia la macchina virtuale sul cluster, quindi applicala al cluster:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      labels:
        kubevirt.io/vm: win-vm
      name: win-vm #  Propagate the virtual machine name to the VMI
    spec:
      osType: Windows
      compute:
        virtualMachineTypeName: my-vmt
      interfaces:
        - name: eth0
          networkName: my-network
          default: true
      disks:
        - virtualMachineDiskName: windows-main-disk
          boot: true
        - virtualMachineDiskName: windows-iso-disk
        - virtualMachineDiskName: win-virtio-driver

    Devi anche configurare le seguenti funzionalità sul cluster:

  7. Installa Windows sulla macchina virtuale:

    1. Attendi che il pod importer scarichi l'immagine disco di installazione di Windows.
    2. Controlla lo stato della macchina virtuale:

      kubectl get gvm VM_NAME

      Sostituisci VM_NAME con il nome della macchina virtuale, win-vm in questo esempio.

    3. Completa l'installazione di Windows seguendo i passaggi descritti in Connettiti alla VM Windows e completa l'installazione del sistema operativo.

  8. Pulizia:

    1. Arresta la macchina virtuale:

      kubectl virt stop VM_NAME

      Sostituisci VM_NAME con il nome della macchina virtuale, win-vm in questo esempio.

    2. Completa i passaggi descritti in Scollega l'immagine ISO e il disco dei driver.

Gestire le macchine virtuali in esecuzione su Distributed Cloud connected

Per istruzioni sulla gestione delle macchine virtuali in esecuzione su Distributed Cloud Connected, consulta la seguente documentazione sul runtime VM su GDC:

Per gestire le macchine virtuali in esecuzione su Distributed Cloud connesso, devi prima configurare la kubectlconnettività.

Disabilita il runtime VM su GDC su Distributed Cloud connected

Segui i passaggi descritti in questa sezione per disabilitare VM Runtime su GDC in Distributed Cloud connected. Prima di poter disattivare il runtime VM su GDC su Distributed Cloud connesso, devi arrestare ed eliminare tutte le macchine virtuali sul tuo cluster Distributed Cloud connesso come descritto in Eliminare una VM.

Per disattivare VM Runtime su GDC su Distributed Cloud connected, modifica la risorsa personalizzata VMRuntime impostando il parametro spec enabled su false come segue, quindi applicalo al cluster:

apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
  name: vmruntime
spec:
  # Disable Anthos VM Runtime
  enabled: false
  # vmImageFormat defaults to "raw" if not set
  vmImageFormat: "raw"

Passaggi successivi