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.

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.

Hinweise

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 diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

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:

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:

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 den folgenden Knotenselektor 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