So nutzen Sie die virtuelle Netzwerkschnittstelle von Compute Engine für erstellte Instanzen

Die virtuelle Netzwerkschnittstelle von Compute Engine (auch als gVNIC bezeichnet) wurde speziell für die Verwendung in Compute Engine entwickelt. Die virtuelle Compute Engine-Netzwerkschnittstelle bietet ein effizienteres Übermittlungsnetzwerk zum Senden von Traffic an Ihre und von Ihren VM-Instanzen. Früher nutzten in Compute Engine ausgeführte VM-Instanzen eine virtuelle Netzwerkschnittstelle, die auf der Spezifikation virtIO beruhte.

Die virtuelle Compute Engine-Netzwerkschnittstelle ist für höhere Netzwerkbandbreiten erforderlich, z. B. Geschwindigkeiten von 50 bis 100 Gbit/s, die für verteilte Arbeitslasten auf Instanzen mit verknüpften GPUs verwendet werden können.

Zum Erstellen von VM-Instanzen, die die virtuelle Netzwerkschnittstelle von Compute Engine verwenden, können Sie einen der folgenden Schritte ausführen:

Vorbereitung

Einschränkungen

Die virtuelle Compute Engine-Netzwerkschnittstelle wird nicht für VM-Instanzen unterstützt, die speicheroptimierte Maschinentypen verwenden.

Betriebssystemunterstützung

Die folgenden Images gehören zum Image-Projekt gvnic-vm-image-prod und sind so konfiguriert, dass sie die virtuelle Netzwerkschnittstelle von Compute Engine verwenden:

  • Debian 9 – debian-9-gvnic
  • Windows
    • Windows Server 2019 – windows-2019-gvnic
    • Windows Server 2016 – windows-2016-gvnic
    • Windows Server 2012 R2 – windows-2012-r2-gvnic

Sie können eines dieser Images verwenden, um eine VM-Instanz zu erstellen, die standardmäßig die virtuelle Netzwerkschnittstelle Compute Engine nutzt.

VM-Instanz mit vorkonfigurierten Images erstellen

Wenn Sie eine VM-Instanz mit einem Image aus dem Image-Projekt gvnic-vm-image-prod erstellen möchten, führen Sie die Schritte zum Erstellen einer VM-Instanz aus und stellen Sie das Image-Projekt und die Image-Familie bereit.

Debian

Führen Sie den folgenden Befehl aus, um eine Debian-Instanz zu erstellen:

gcloud beta compute instances create instance-name \
      --image-project=gvnic-vm-image-prod \
      --image-family=debian-9-gvnic

Ersetzen Sie instance-name durch den Namen Ihrer Instanz.

Windows

  • Führen Sie den folgenden Befehl aus, um eine Windows 2019-Instanz zu erstellen:

    gcloud beta compute instances create instance-name \
            --image-project=gvnic-vm-image-prod \
            --image-family=windows-2019-gvnic
    
  • Führen Sie den folgenden Befehl aus, um eine Windows 2016-Instanz zu erstellen:

    gcloud beta compute instances create instance-name \
              --image-project=gvnic-vm-image-prod \
              --image-family=windows-2016-gvnic
    
  • Führen Sie den folgenden Befehl aus, um eine Windows 2012 R2-Instanz zu erstellen:

    gcloud beta compute instances create instance-name \
              --image-project=gvnic-vm-image-prod \
              --image-family=windows-2012-r2-gvnic
    

    Ersetzen Sie instance-name durch den Namen Ihrer Instanz.

Virtuellen Compute Engine-Netzwerktreiber manuell installieren

Wenn Sie eine VM-Instanz aus einem Image erstellen möchten, auf dem der virtuelle Compute Engine-Netzwerktreiber nicht installiert ist, gehen Sie folgendermaßen vor:

  1. Installieren Sie den virtuellen Compute Engine-Netzwerktreiber auf dem Image.
  2. Verwenden Sie das Image, auf dem jetzt der virtuelle Compute Engine-Netzwerktreiber installiert ist, um eine VM-Instanz zu erstellen.

Linux

Bevor Sie den virtuellen Compute Engine-Netzwerktreiber installieren können, müssen Sie die neuesten Versionen des Kernel-Treibers und des Headers für Ihr Betriebssystem installieren. Eine Instanz, die eine virtuelle Compute Engine-Netzwerkschnittstelle ohne Kerneltreiber verwendet, hat weder SSH noch RDP oder eine andere interne oder externe Netzwerkverbindung.

Wenn Sie den Kernel-Treiber aus der Quelle erstellen und installieren möchten, benötigen Sie einen unterstützten Kernel mit installierten Headern. Der virtuelle Compute Engine-Netzwerktreiber unterstützt die Erstellung für Mainline- und Major-Distribution-Kernel ab den Versionen 3.10.

  1. Installieren oder aktualisieren Sie Kernel und Header auf eine Version ab 3.10. Wie Sie diesen Schritt ausführen, können Sie der Dokumentation für Ihr Betriebssystem entnehmen. Quellcode- und Treiberpakete erhalten Sie auf GitHub. Siehe GoogleCloudPlatform/compute-virtual-ethernet-linux.

  2. Verwenden Sie Ihr Image, um eine VM-Instanz zu erstellen und zu starten.

  3. Laden Sie den Kernel-Treiber auf dieser VM-Instanz. Führen Sie den folgenden Befehl aus, um den Treiber zu laden:

    modprobe gve

    Mit diesem Befehl wird der Treiber geladen, bis Sie entweder das System neu starten oder den Treiber mit dem Befehl rmmod entfernen.

  4. (Optional) Führen Sie einen der folgenden Befehle aus, damit der Treiber beim Systemstart automatisch geladen wird:

    • Führen Sie für Betriebssysteme, die systemd verwenden, den folgenden Befehl aus:

      echo gve > /etc/modules-load.d/gve.conf
    • Führen Sie für Debian-Systeme den folgenden Befehl aus:

      echo gve >> /etc/modules
  5. Stoppen Sie die VM-Instanz.

  6. Erstellen Sie ein Image von dem Laufwerk, das mit der gerade angehaltenen VM-Instanz verknüpft ist.

    gcloud beta compute images create image-name\
            --source-disk disk-name \
            --guest-os-features=GVNIC
    

    Ersetzen Sie Folgendes:

    • image-name: Der Name des Images, das Sie erstellen möchten. Auf diesem Image ist der virtuelle Compute Engine-Netzwerktreiber installiert.
    • disk-name: Der Name des Bootlaufwerks auf der VM-Instanz, die Sie gerade angehalten haben.
  7. Verwenden Sie das Image, auf dem der virtuelle Compute Engine-Netzwerktreiber installiert ist, zum Erstellen und Starten einer VM-Instanz.

Windows

  1. Verwenden Sie das Image, um eine VM-Instanz zu erstellen und zu starten.

  2. Installieren Sie GooGet auf dieser VM-Instanz. Informationen zur Installation von GooGet finden Sie unter GooGet herunterladen und installieren.

  3. Installieren Sie den gVNIC-Treiber. Führen Sie in einer erweiterten PowerShell-Eingabeaufforderung den folgenden Befehl aus, um den Treiber zu installieren:

    googet install google-compute-engine-driver-gvnic
  4. Stoppen Sie die VM-Instanz.

  5. Erstellen Sie ein Image von dem Laufwerk, das mit der gerade angehaltenen VM-Instanz verknüpft ist.

    gcloud beta compute images create image-name\
            --source-disk disk-name \
            --guest-os-features=GVNIC
    

    Ersetzen Sie Folgendes:

    • image-name: Der Name des Images, das Sie erstellen möchten. Auf diesem Image ist jetzt der virtuelle Compute Engine-Netzwerktreiber installiert.
    • disk-name: Der Name des Bootlaufwerks auf der VM-Instanz, die Sie gerade angehalten haben.
  6. Verwenden Sie das Image, auf dem der virtuelle Compute Engine-Netzwerktreiber installiert ist, zum Erstellen und Starten einer VM-Instanz.

Aktivierung der virtuellen Compute Engine-Netzwerkschnittstelle prüfen

Linux

1. Methode

  1. Führen Sie auf Ihrer VM-Instanz unter Linux die folgenden Befehle aus:

    sudo apt install pciutils
    lspci
    

    Die Ausgabe sollte in etwa so aussehen:

    00:04.0 Ethernet controller: Google, XXX. Device 0042

Methode 2

  1. Wie Sie das Netzwerkdienstprogramm ethtool herunterladen, können Sie der Anleitung zu Ihrem Betriebssystem entnehmen.

  2. Führen Sie diesen Befehl aus:

    sudo ethtool -i network-interface

    Ersetzen Sie network-interface durch den Namen Ihrer Netzwerkschnittstelle. Beispiel: eth0

    Die Ausgabe sollte in etwa so aussehen:

    driver: gve
    version: 1.0.0
    firmware-version:
    expansion-rom-version:
    bus-info: 0000:00:04.0
    supports-statistics: yes
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags: no

Windows

  1. Öffnen Sie auf Ihrer VM-Instanz unter Windows den Geräte-Manager.
  2. Unter "Netzwerkadapter" sollten Sie diesen Eintrag finden: "Google Ethernet Adapter"

Fehlerbehebung

Die VM-Instanz konnte nicht gebootet werden

  • Ursache: Der virtuelle Compute Engine-Netzwerktreiber ist nicht auf dem Image aktiviert.

  • Diagnose: Prüfen Sie, ob die virtuelle Compute Engine-Netzwerkschnittstelle für das Image aktiviert ist. Überprüfen Sie das Ergebnis mit folgendem Befehl:

    gcloud beta compute images describe image-name

    Ersetzen Sie image-name durch den Namen des Images.

    Mit diesem Befehl sollte unter guestOsFeatures "GVNIC" ausgegeben werden.

  • Lösung: Vergewissern Sie sich, dass Sie ein unterstütztes Image verwenden oder dass Sie den gVNIC-Treiber in Ihrem benutzerdefinierten Image richtig eingerichtet haben.

Die VM-Instanz wurde gebootet, ist aber über das Netzwerk nicht erreichbar

  • Ursache: Der virtuelle Compute Engine-Netzwerktreiber wurde nicht richtig installiert und geladen.

  • Diagnose: Führen Sie die folgenden Schritte aus, um zu prüfen, ob der Treiber installiert und geladen ist:

    Linux

    1. Prüfen Sie, ob der Treiber installiert ist.

      modinfo gve

      Die Ausgabe sollte in etwa so aussehen:

      filename:       /lib/modules/4.15.0-1036-gcp/updates/dkms/gve.ko
      version:        1.0.0
      license:        Dual MIT/GPL
      description:    gVNIC Driver
      author:         Google, XXX.
      srcversion:     5FEFB9DD945EB2DEC94EE09
      alias:          pci:v00001AE0d00000042sv*sd*bc*sc*i*
      depends:
      retpoline:      Y
      name:           gve
      vermagic:       4.15.0-1036-gcp SMP mod_unload
      
    2. Prüfen Sie, ob der Treiber geladen ist.

      lsmod | grep gve

      Die Ausgabe sollte in etwa so aussehen:

      gve                    49152  0

    Windows

    1. Stellen Sie über SAC die Verbindung zur Instanz her.
    2. Melden Sie sich mit Ihrem Nutzernamen und Ihrem Passwort an.
    3. Führen Sie in der Eingabeaufforderung den folgenden Befehl aus:

      dism /online /get-drivers | findstr gvnic
    4. Sehen Sie sich das Ergebnis an.

      • Wenn der Treiber installiert ist, sollte der Text Original File Name : gvnic.inf ausgegeben werden.
      • Wenn der Treiber nicht installiert ist, wird keine Nachricht zurückgegeben.
  • Lösung: Wenn der virtuelle Compute Engine-Netzwerktreiber nicht verfügbar ist, sollten Sie prüfen, ob Sie ein unterstütztes Image verwenden oder den virtuellen Compute Engine-Netzwerktreiber auf Ihrem benutzerdefinierten Image richtig eingerichtet haben.

Weitere Informationen