Verschachtelte VMs mit GKE Standard-Clustern verwenden

Auf der folgenden Seite wird erläutert, wie Sie GKE-Standardcluster (Google Kubernetes Engine) mit Knoten erstellen, die die verschachtelte Virtualisierung unterstützen. Compute Engine-VMs verwenden Intel VT-x-Anweisungen, sodass verschachtelte VMs auf der zugrunde liegenden VM eines GKE-Knotens ausgeführt werden können. Anschließend können Sie Pods bereitstellen, die Tools wie QEMU zum Erstellen verschachtelter VMs verwenden. Sie können verschachtelte VMs verwenden, um spezielle Arbeitslasten wie Android-Emulatoren oder Arbeitslasten auszuführen, die von der VM als Isolationsgrenze profitieren, z. B. Micro-VMs, die Open-Source- Kata-Containerverwenden.

Ein Tutorial zur Verwendung von Open-Source-Kata-Containern mit GKE Agent Sandbox finden Sie unter Kata-Container in GKE aktivieren.

Geringere Auswirkungen auf die Leistung

Bei der hardwaregestützten verschachtelten Virtualisierung können Arbeitslasten, die auf den verschachtelten VMs ausgeführt werden, im Vergleich zu nicht verschachtelten Virtualisierungskonfigurationen eine geringere Leistung haben. Die Auswirkungen auf die Leistung hängen vom jeweiligen Arbeitslastprofil ab, einschließlich dessen E/A- und Arbeitsspeichernutzungsmerkmale.

Darüber hinaus kann sich das Erstellen verschachtelter VMs auf den zugrunde liegenden VMs der GKE-Knoten auf die Leistung anderer Arbeitslasten auswirken, die auf diesen Knoten ausgeführt werden.

Hinweis

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diesen Task verwenden möchten, installieren und dann initialisieren Sie die gcloud CLI. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit dem gcloud components update Befehl ab. Ältere gcloud CLI-Versionen unterstützen möglicherweise nicht die Ausführung der Befehle in diesem Dokument.

Anforderungen und Einschränkungen

Beachten Sie die folgenden Informationen, bevor Sie die verschachtelte Virtualisierung mit GKE aktivieren und Ihren Pods das Erstellen verschachtelter VMs erlauben:

  • Sie können Knotenpools mit verschachtelten VMs nur mit einer begrenzten Anzahl von VM-Maschinen konfigurieren. In der Zeile Verschachtelte Virtualisierung des Vergleichs der Maschinenserien finden Sie Informationen zu unterstützten Maschinenserien.
  • Sie müssen den Image-Typ UBUNTU_CONTAINERD oder den Image-Typ COS_CONTAINERD bei Knoten verwenden, auf denen Version 1.28.4-gke.1083000 oder höher ausgeführt wird.
  • Sie können die verschachtelte Virtualisierung nur mit Standardclustern verwenden, nicht mit Autopilot-Clustern.
  • Sie können die automatische Knotenbereitstellung nicht mit verschachtelten Knotenpools verwenden, die die Virtualisierung aktiviert.
  • Sie können die verschachtelte Virtualisierung nicht verwenden, wenn die Einschränkung Verschachtelte Virtualisierung für VM deaktivieren für Ihre Organisationsrichtlinie erzwungen wird.
  • Sie müssen securityContext.privileged:true festlegen, damit Pods mit verschachtelten VMs interagieren können.

Verschachtelte Virtualisierung aktivieren

Sie können die verschachtelte Virtualisierung aktivieren, wenn Sie einen Cluster erstellen, indem Sie sie für den Standardknotenpool aktivieren, oder wenn Sie einen Knotenpool erstellen. Sie können das Feature für einen vorhandenen Knotenpool nicht aktivieren oder deaktivieren.

In den folgenden Abschnitten werden Knotenpools mit Knoten mit dem Label nested-virtualization=enabled erstellt. Nachdem GKE die Knoten erstellt hat, können Sie Pods planen, die verschachtelte VMs in der zugrunde liegenden VM des Knotens erstellt haben.

Verschachtelte Virtualisierung mit einem neuen Standardcluster aktivieren

Erstellen Sie einen neuen Standardcluster mit aktivierter verschachtelter Virtualisierung für den Standardknotenpool. GKE erstellt den Standardknotenpool nur mit aktivierter verschachtelter Virtualisierung. GKE aktiviert das Feature nicht automatisch für alle neuen Knotenpools, die für den Cluster erstellt werden:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster erstellen auf.

    Zur Seite „Kubernetes-Cluster erstellen“

  2. Konfigurieren Sie den Cluster.
  3. Wählen Sie im Navigationsmenü unter KNOTENPOOLS die Option Standardpool aus. Wählen Sie dann Knoten aus.
  4. Wählen Sie im Abschnitt Maschinenkonfiguration einen unterstützten Maschinentyp aus (siehe Zeile Verschachtelte Virtualisierung ).
  5. Wählen Sie nach dem Abschnitt Reservierungen das Kästchen Verschachtelte Virtualisierung aktivieren aus.
  6. Klicken Sie auf Erstellen, um den Cluster zu erstellen.

gcloud

gcloud container clusters create CLUSTER_NAME \
    --enable-nested-virtualization \
    --node-labels=nested-virtualization=enabled \
    --machine-type=MACHINE_TYPE

Ersetzen Sie Folgendes:

Prüfen Sie optional, ob für einen Knoten im Knotenpool die verschachtelte Virtualisierung aktiviert ist.

Sie können jetzt Pods planen, die verschachtelte VMs auf der zugrunde liegenden VM des Knotens erstellen.

Verschachtelte Virtualisierung mit einem neuen Knotenpool aktivieren

Erstellen Sie einen neuen Knotenpool mit aktivierter verschachtelter Virtualisierung für einen vorhandenen Standard-Cluster:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster auf.

    Zur Seite „Kubernetes-Cluster“

  2. Klicken Sie auf den Namen des Clusters, in dem Sie einen neuen Knotenpool mit aktivierter verschachtelter Virtualisierung erstellen möchten, um die Detailseite des Clusters zu öffnen.

  3. Konfigurieren Sie den Knotenpool.

  4. Klicken Sie auf den Tab Knoten.

  5. Klicken Sie in der Überschrift des Abschnitts Knotenpools auf Vom Nutzer verwalteten Knotenpool erstellen.

  6. Wählen Sie im Navigationsmenü Knoten aus.

  7. Wählen Sie im Abschnitt Maschinenkonfiguration einen unterstützten Maschinentyp aus (siehe Zeile Verschachtelte Virtualisierung ).

  8. Wählen Sie nach dem Abschnitt Reservierungen das Kästchen Verschachtelte Virtualisierung aktivieren aus.

  9. Klicken Sie auf Erstellen, um den Knotenpool zu erstellen.

gcloud

gcloud container node-pools create NODEPOOL_NAME \
    --enable-nested-virtualization \
    --node-labels=nested-virtualization=enabled \
    --cluster=CLUSTER_NAME \
    --machine-type=MACHINE_TYPE

Ersetzen Sie Folgendes:

Prüfen Sie optional, ob für einen Knoten im Knotenpool die verschachtelte Virtualisierung aktiviert ist.

Sie können jetzt Pods planen, die verschachtelte VMs auf der zugrunde liegenden VM des Knotens erstellen.

Pod auf einem Knoten planen, der die verschachtelte Virtualisierung unterstützt

Fügen Sie der Spezifikation die folgende Knotenauswahl hinzu, um einen Pod auf einem Knoten mit aktivierter verschachtelter Virtualisierung zu planen:

nodeSelector:
  nested-virtualization: enabled

Damit der Pod eine Verbindung zu einer verschachtelten VM herstellen kann, müssen Sie den Pod durch Konfigurieren von securityContext.privileged:true als privilegiert festlegen.

Nächste Schritte