Virtuelle Maschinen auf mit Distributed Cloud verbundenen Racks verwalten

Auf dieser Seite wird beschrieben, wie Sie virtuelle Maschinen auf Racks verwalten, die mit Google Distributed Cloud verbunden sind und VM Runtime on Google Distributed Cloud ausführen. Sie müssen mit der VM Runtime on GDC vertraut sein, bevor Sie die Schritte auf dieser Seite ausführen. Eine Liste der unterstützten Gastbetriebssysteme finden Sie unter Verifizierte Gastbetriebssysteme für VM Runtime auf GDC.

Informationen dazu, wie virtuelle Maschinen als wesentliche Komponente der verbundenen Plattform von Distributed Cloud dienen, finden Sie unter GKE Enterprise erweitern, um lokale Edge-VMs zu verwalten.

Distributed Cloud Connected Clusters unterstützen Webhooks für virtuelle Maschinen. So kann Distributed Cloud Connected Nutzeranfragen, die an den lokalen Kubernetes API-Server gesendet werden, validieren. Bei abgelehnten Anfragen werden detaillierte Informationen zum Ablehnungsgrund generiert.

VM Runtime on GDC-Unterstützung in Distributed Cloud Connect aktivieren

Standardmäßig ist die Unterstützung für virtuelle Maschinen in VM Runtime on GDC für Distributed Cloud Connected deaktiviert. Führen Sie die Schritte in diesem Abschnitt aus, um die Funktion zu aktivieren. Bei der Anleitung in diesem Abschnitt wird davon ausgegangen, dass Sie einen voll funktionsfähigen Distributed Cloud Connect-Cluster haben.

  1. Ändern Sie die benutzerdefinierte Ressource VMRuntime mit dem folgenden Inhalt und wenden Sie sie auf Ihren Cluster an:

    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;
      haPolicy:
        defaultRecoveryStrategy: Reschedule
        nodeHeartbeatInterval: 15s
        nodeMonitorGracePeriod: 55s

    Ändern Sie den Wert des Parameters vmImageFormat nicht. Distributed Cloud Connected unterstützt keine anderen virtuellen Festplattenformate.

    Dieser Vorgang dauert in der Regel einige Minuten.

    Ändern Sie den Wert des Parameters vmImageFormat nicht. Distributed Cloud Connected unterstützt keine anderen virtuellen Festplattenformate.

    Dieser Vorgang dauert in der Regel einige Minuten.

  2. Verwenden Sie den folgenden Befehl, um zu prüfen, ob die benutzerdefinierte Ressource VMRuntime auf Ihren Cluster angewendet wurde:

    kubectl get vmruntime -o yaml

    Der Befehl gibt eine Ausgabe ähnlich dem folgenden Beispiel zurück:

     - apiVersion: vm.cluster.gke.io/v1
       kind: VMRuntime
       metadata:
         name: vmruntime
         ...
       spec:
         enabled: true
         vmImageFormat: raw
       status:
         ...
       ready: true
         ...
    
  3. Mit dem folgenden Befehl können Sie prüfen, ob die Unterstützung von VM Runtime on GDC-VMs in Ihrem Cluster aktiviert wurde:

    kubectl get pods -n vm-system

    Der Befehl gibt eine Ausgabe zurück, die die VM-Laufzeit auf GDC-Subsystem-Pods zeigt, die in Ihrem Cluster ausgeführt werden. Die Ausgabe sieht in etwa so aus:

    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
    

virtctl-Verwaltungstool installieren

Sie benötigen das Clienttool virtctl, um virtuelle Maschinen in Ihrem mit Distributed Cloud verbundenen Cluster zu verwalten. So installieren Sie das Tool:

  1. Installieren Sie das virtctl-CLienttool als kubectl-Plug-in.

    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. Überprüfen Sie, ob das Plug-in virt installiert ist:

    kubectl plugin list

    Wenn das Plug-in erfolgreich installiert wurde, wird kubectl-virt in der Ausgabe des Befehls als eines der Plug-ins aufgeführt.

Virtuelle Maschine in Distributed Cloud Connected bereitstellen

In diesem Abschnitt finden Sie Konfigurationsbeispiele, die veranschaulichen, wie Sie eine Linux-VM und eine Windows-VM in einem mit Distributed Cloud verbundenen Cluster mit der Symcloud Storage-Abstraktionsschicht bereitstellen.

Sie können keine virtuelle Maschine in einem mit Distributed Cloud verbundenen Cluster direkt mit dem Befehl kubectl virt erstellen, da Distributed Cloud Connected keinen Dateisystemspeicher für virtuelle Maschinen bietet.

Bevor Sie die Schritte in diesem Abschnitt ausführen, müssen Sie zuerst die Schritte unter Distributed Cloud Connected für Symcloud Storage konfigurieren ausführen. Wenn Sie Symcloud Storage später im Cluster deaktivieren, schlagen virtuelle Maschinen fehl, die für die Verwendung von Symcloud Storage konfiguriert sind.

Linux-VM in Distributed Cloud Connected bereitstellen

Im folgenden Beispiel wird gezeigt, wie Sie eine Linux-VM mit Symcloud Storage bereitstellen, auf der Ubuntu Server 22.04 ausgeführt wird. Die Installationsquelle ist das ISO-Laufwerk-Image von Ubuntu Server 22.04.

  1. Erstellen Sie eine VirtualMachineDisk-Ressource mit dem folgenden Inhalt für das Installations-Disc-Image von Ubuntu Server und wenden Sie sie dann auf Ihren Cluster an:

    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. Erstellen Sie eine VirtualMachineDisk-Ressource mit dem folgenden Inhalt für die virtuelle Festplatte der VM und wenden Sie sie dann auf Ihren Cluster an:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: "ubuntu-main-disk"
    spec:
      size: 200Gi
      storageClassName: robin
  3. Erstellen Sie eine VirtualMachineType-Ressource mit dem folgenden Inhalt, der die Konfiguration der virtuellen Maschine angibt, und wenden Sie sie dann auf Ihren Cluster an:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  4. Erstellen Sie eine VirtualMachine-Ressource mit dem folgenden Inhalt, die die virtuelle Maschine im Cluster instanziiert und startet, und wenden Sie sie dann auf Ihren Cluster an:

    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

    Außerdem müssen Sie die folgenden Funktionen in Ihrem Cluster konfigurieren:

  5. Installieren Sie Ubuntu Server auf der VM:

    1. Warten Sie, bis der importer-Pod das Installations-Disc-Image von Ubuntu Server heruntergeladen hat.
    2. Prüfen Sie den Status der virtuellen Maschine:

      kubectl get gvm VM_NAME

      Ersetzen Sie VM_NAME durch den Namen der virtuellen Maschine, in diesem Beispiel ubu-vm.

    3. Melden Sie sich über SSH oder Remote Desktop bei der VM an.

    4. Führen Sie die Installationsschritte für Ubuntu Linux aus.

  6. Bereinigen:

    1. Beenden Sie die virtuelle Maschine:

      kubectl virt stop VM_NAME

      Ersetzen Sie VM_NAME durch den Namen der virtuellen Maschine, in diesem Beispiel ubu-vm.

    2. Bearbeiten Sie die YAML-Datei der VM, um den Verweis auf das Installations-Disc-Image zu entfernen:

      kubectl edit gvm VM_NAME

      Ersetzen Sie VM_NAME durch den Namen der virtuellen Maschine, in diesem Beispiel ubu-vm.

    3. Starten Sie die virtuelle Maschine:

      kubectl virt start VM_NAME

      Ersetzen Sie VM_NAME durch den Namen der virtuellen Maschine, in diesem Beispiel ubu-vm.

    4. Löschen Sie die VirtualMachineDisk-Ressource für das Installations-Disc-Image:

      kubectl delete virtualmachinedisk ubuntu-iso-disk

Windows-VM in Distributed Cloud Connected bereitstellen

Das folgende Beispiel veranschaulicht, wie Sie eine Windows-VM mit Symcloud Storage bereitstellen. Die Schritte ähneln dem Bereitstellen einer virtuellen Linux-Maschine. Zusätzlich ist das virtio-Treiber-Laufwerk-Image erforderlich, um Windows zu installieren.

  1. Besorgen Sie sich eine lizenzierte Kopie von Windows und das Image des Installationsmediums.

  2. Erstellen Sie eine VirtualMachineDisk-Ressource mit dem folgenden Inhalt für das Installations-Disc-Image von Windows und wenden Sie sie dann auf Ihren Cluster an:

    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

    Ersetzen Sie NAT_GATEWAY durch die vollständige URL zum ISO-Datenträger-Image der Windows-Zielinstallation.

  3. Erstellen Sie eine VirtualMachineDisk-Ressource mit folgendem Inhalt für den virtio-Treiber und wenden Sie sie dann auf Ihren Cluster an:

    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. Erstellen Sie eine VirtualMachineDisk-Ressource mit dem folgenden Inhalt für die virtuelle Festplatte der VM und wenden Sie sie dann auf Ihren Cluster an:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: windows-main-disk
      namespace: default
    spec:
      size: 15Gi
      storageClassName: robin
  5. Erstellen Sie eine VirtualMachineType-Ressource mit dem folgenden Inhalt, der die Konfiguration der virtuellen Maschine angibt, und wenden Sie sie dann auf Ihren Cluster an:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineType
    metadata:
      name: small-2-20
    spec:
      cpu:
        vcpus: 2
      memory:
        capacity: 20Gi
  6. Erstellen Sie eine VirtualMachine-Ressource mit dem folgenden Inhalt, die die virtuelle Maschine im Cluster instanziiert und startet, und wenden Sie sie dann auf Ihren Cluster an:

    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

    Außerdem müssen Sie die folgenden Funktionen in Ihrem Cluster konfigurieren:

  7. Windows auf der VM installieren:

    1. Warten Sie, bis der importer-Pod das Windows-Installations-Disc-Image heruntergeladen hat.
    2. Prüfen Sie den Status der virtuellen Maschine:

      kubectl get gvm VM_NAME

      Ersetzen Sie VM_NAME durch den Namen der virtuellen Maschine, in diesem Beispiel win-vm.

    3. Schließen Sie die Windows-Installation ab, indem Sie den Schritten unter Verbindung zur Windows-VM herstellen und Betriebssysteminstallation abschließen folgen.

  8. Bereinigen:

    1. Beenden Sie die virtuelle Maschine:

      kubectl virt stop VM_NAME

      Ersetzen Sie VM_NAME durch den Namen der virtuellen Maschine, in diesem Beispiel win-vm.

    2. Führen Sie die Schritte unter ISO-Image und Treiber-CD trennen aus.

Virtuelle Maschinen verwalten, die in Distributed Cloud Connected ausgeführt werden

Eine Anleitung zum Verwalten von virtuellen Maschinen, die auf Distributed Cloud Connected ausgeführt werden, finden Sie in der folgenden Dokumentation zu VM Runtime on GDC:

Wenn Sie virtuelle Maschinen verwalten möchten, die auf Distributed Cloud Connected ausgeführt werden, müssen Sie zuerst die kubectl-Verbindung konfigurieren.

VM Runtime on GDC in Distributed Cloud Connect deaktivieren

Führen Sie die Schritte in diesem Abschnitt aus, um VM Runtime on GDC auf Distributed Cloud Connected zu deaktivieren. Bevor Sie die VM Runtime on GDC in einem Distributed Cloud Connected-Cluster deaktivieren können, müssen Sie alle VMs in Ihrem Distributed Cloud Connected-Cluster beenden und löschen, wie unter VM löschen beschrieben.

Um VM Runtime on GDC on Distributed Cloud Connected zu deaktivieren, ändern Sie die benutzerdefinierte Ressource VMRuntime, indem Sie den Spezifikationsparameter enabled wie folgt auf false festlegen, und wenden Sie sie dann auf Ihren Cluster an:

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"

Nächste Schritte