GKE-Arbeitslasten mit Knoten für einzelne Mandanten isolieren


Auf dieser Seite erfahren Sie, wie Sie Ihre auf GKE-Standardclustern (Google Kubernetes Engine) ausgeführten Arbeitslasten mithilfe von Compute Engine-Knoten für einzelne Mandanten isolieren. Diese Knoten sind dedizierte physische Server, die nur die VMs eines bestimmten Projekts ausführen. Sie können Knoten für einzelne Mandanten verwenden, um Ihre VMs physisch von VMs in anderen Projekten getrennt zu halten oder auf derselben Hosthardware zu gruppieren.

Dieses Feature wird für GKE Autopilot nicht unterstützt. Weitere Informationen zu den Sicherheitsgrenzen von Autopilot finden Sie unter Sicherheitsgrenzen in Autopilot.

Wenn Sie Knoten für einzelne Mandanten in GKE verwenden möchten, erstellen Sie in Compute Engine eine Knotengruppe für einzelne Mandanten und verwenden diese Knotengruppe zum Erstellen eines GKE-Knotenpools. Sie können Knotenpools mithilfe von Knoten für einzelne Mandanten aus dem Projekt Ihres GKE-Clusters oder freigegebene Knoten für einzelne Mandanten erstellen. Dazu verwenden Sie Ressourcen in Projekten innerhalb Ihrer Organisation. Sie können beispielsweise ein Inhaberprojekt in Ihrer Organisation festlegen, in dem Sie Knotengruppen für einzelne Mandanten erstellen, und Nutzerprojekte festlegen, in denen Sie Cluster mit Knotenpools haben, die jene Knotengruppen aus dem Inhaberprojekt verwenden.

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 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.

Weitere Kontingente anfordern

Knoten für einzelne Mandanten sind groß (z. B. 96 vCPUs und 624 GB Arbeitsspeicher) und die Kontingente des Standardprojekts sind zu niedrig.

Sie müssen auf der Seite "Kontingente" eine Kontingenterhöhung für Compute Engine API-CPUs anfordern, um Knoten für einzelne Mandanten zu erstellen. Weitere Informationen zum Anfordern einer Erhöhung finden Sie unter Kontingente.

Die Anzahl der benötigten CPUs hängt von folgenden Faktoren ab:

  • Die aktuelle CPU-Kontingentnutzung.
  • Die Größe der Knotengruppe.
  • Die Knotenvorlage.

Prüfen Sie die Anzahl der Kerne Ihres Knotentyps für einzelne Mandanten und fordern Sie ein CPU-Limit von mindestens dieser Größenordnung an, am besten mit zusätzlichen 10 CPUs. So sorgen Sie dafür, dass Ihr Projekt eine angemessene Kapazität hat.

Knotenvorlage für einzelne Mandanten erstellen

Eine Knotenvorlage für einzelne Mandanten ist eine regionale Ressource, die beim Erstellen einer Knotengruppe Attribute definiert und auf jeden Knoten anwendet. Weitere Informationen finden Sie unter Knotentypen.

Wenn Sie freigegebene Knoten für einzelne Mandanten verwenden, müssen Sie die Anleitungen im Inhaberprojekt für die Knotengruppe ausführen, nicht im Nutzerprojekt des Clusters.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Knoten für einzelne Mandanten auf.

    Zur Seite "Knoten für einzelne Mandanten"

  2. Klicken Sie auf Knotenvorlage erstellen.

  3. Geben Sie einen Namen und eine Region für Ihre Knotenvorlage an.

  4. Wählen Sie einen Knotentyp aus.

  5. Optional können Sie ein oder mehrere Knotenaffinitätslabels hinzufügen.

  6. Klicken Sie auf Erstellen, um die Knotenvorlage zu erstellen.

gcloud

Verwenden Sie den Befehl gcloud compute sole-tenancy node-templates create, um eine Knotenvorlage zu erstellen:

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type=NODE_TYPE \
    --node-affinity-labels=AFFINITY_LABELS \
    --region=COMPUTE_REGION

Dabei gilt:

  • TEMPLATE_NAME: Name der neuen Knotenvorlage.
  • NODE_TYPE: Knotentyp für Knoten für einzelne Mandanten, die anhand dieser Vorlage erstellt wurden. Verwenden Sie den Befehl gcloud compute sole-tenancy node-types list, um eine Liste der in den einzelnen Zonen verfügbaren Knotentypen abzurufen.
  • AFFINITY_LABELS: Schlüssel und Werte, [KEY=VALUE,...], für Affinitätslabels. Mit Affinitätslabels können Sie Knoten und Knotengruppen logisch gruppieren. Später können Sie bei der Bereitstellung von VMs Affinitätslabels auf den VMs angeben, um VMs auf einem bestimmten Satz von Knoten oder Knotengruppen zu planen. Weitere Informationen finden Sie unter Knotenaffinität und Anti-Affinität.
  • COMPUTE_REGION: Region, in der die Knotenvorlage erstellt werden soll. Mit dieser Vorlage können Sie Knotengruppen in jeder Zone dieser Region erstellen.

Die Ausgabe sieht in etwa so aus:

Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].

Knotengruppe für einzelne Mandanten erstellen

Eine Knotengruppe ist eine Gruppe von Knoten für einzelne Mandanten in einer bestimmten Zone aus derselben Knotenvorlage für einzelne Mandanten. Für regionale Cluster und Knotenpools, die in mehreren Zonen verfügbar sind, müssen Sie in jeder Zone eine Knotengruppe mit demselben Namen erstellen. Achten Sie darauf, dass Ihr Kontingent ausreicht, bevor Sie diesen Schritt ausführen.

Wenn Sie freigegebene Knoten für einzelne Mandanten verwenden, müssen Sie die Anleitungen im Inhaberprojekt für die Knotengruppe ausführen, nicht im Nutzerprojekt des Clusters.

Console

Führen Sie die folgenden Schritte aus, um eine Knotengruppe für einzelne Mandanten zu erstellen:

  1. Rufen Sie in der Google Cloud Console die Seite Knoten für einzelne Mandanten auf.

    Zur Seite "Knoten für einzelne Mandanten"

  2. Klicken Sie auf Knotengruppe erstellen.

  3. Geben Sie einen Namen für Ihre Knotenvorlage an.

  4. Wählen Sie dieselbe Region aus, in der Sie die Knotenvorlage erstellt haben, und wählen Sie dann eine Zone in dieser Region aus.

  5. Wählen Sie Ihre Knotenvorlage aus.

  6. Optional können Sie den Autoscaling-Modus aktivieren.

  7. Geben Sie die Anzahl der Knoten an, die Sie in der Gruppe haben möchten.

  8. Ändern Sie optional die Wartungsrichtlinie.

  9. Wenn Sie die Knotengruppe für einzelne Mandanten freigeben möchten, konfigurieren Sie die Freigabeeinstellungen. Geben Sie dazu im Abschnitt Freigabeeinstellungen konfigurieren eine der folgenden Optionen an:

    • Diese Knotengruppe für alle Projekte in der Organisation freigeben
    • Diese Knotengruppe für ausgewählte Projekte in der Organisation freigeben
  10. Klicken Sie auf Erstellen, um die Knotengruppe zu erstellen.

gcloud

Erstellen Sie eine Knotengruppe aus der Vorlage:

gcloud compute sole-tenancy node-groups create GROUP_NAME \
    --zone COMPUTE_ZONE \
    --node-template TEMPLATE_NAME --target-size TARGET_SIZE \
    --share-settings=SHARE_SETTING \
    --share-with=PROJECTS

Dabei gilt:

  • GROUP_NAME: Der Name der neuen Knotengruppe.
  • COMPUTE_ZONE: Die Zone, in der sich diese Knotengruppe befindet. Diese Zone muss sich in derselben Region befinden wie die von Ihnen verwendete Knotenvorlage.
  • TEMPLATE_NAME: Der Name der von Ihnen verwendeten Knotenvorlage.
  • TARGET_SIZE: Die Anzahl der Knoten, die Sie in der Gruppe erstellen möchten.
  • SHARE_SETTING: Freigabeeinstellung für die Knotengruppe. Wird auf projects gesetzt, um sie für bestimmte Projekte freizugeben, oder auf organization, um sie für die gesamte Organisation freizugeben.
  • PROJECTS: Liste der Projekt-IDs oder Projektnummern, für die die Knotengruppe freigegeben werden soll. Nur erforderlich, wenn Sie SHARE_SETTING auf projects setzen.

GKE-Knotenpool für einzelne Mandanten erstellen

Nachdem Sie in Compute Engine eine Knotengruppe für einzelne Mandanten erstellt haben, können Sie einen Knotenpool für einzelne Mandanten erstellen.

Wenn Sie bereits einen GKE-Cluster haben, können Sie diesem einen Knotenpool hinzufügen. Erstellen Sie andernfalls einen Cluster mit gcloud container clusters create.

Wenn Sie einen regionalen Cluster verwenden oder Ihr Knotenpool in mehreren Zonen verfügbar ist, müssen Sie in jeder dieser Zonen eine Knotengruppe mit demselben Namen erstellen. Wenn Sie den Namen in jeder Zone nicht wiederverwenden können, erstellen Sie separate Knotenpools für jede Zone.

Knotenpool mit einer Knotengruppe für einzelne Mandanten aus dem Projekt des Clusters erstellen

Um einen Knotenpool mit einer Knotengruppe aus dem Projekt des Clusters zu erstellen, übergeben Sie den Namen der Knotengruppe für einzelne Mandanten. Wenn Sie eine freigegebene Knotengruppe für einzelne Mandanten verwenden oder benutzerdefinierte Knotenaffinitätslabels nutzen möchten, die Sie konfiguriert haben als Sie die Vorlage für Knoten für einzelne Mandanten erstellten, finden Sie Anleitungen dazu in Knotenpool mit einem Knoten für einzelne Mandanten mithilfe einer Knotenaffinitätsdatei erstellen.

Erstellen Sie einen neuen Knotenpool mit einer angegebenen Knotengruppe:

Für zonale Knotenpools:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --zone COMPUTE_ZONE --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE

Für regionale Knotenpools:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --region COMPUTE_REGION --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE1,COMPUTE_ZONE2

Dabei gilt:

  • NODE_POOL_NAME ist der Name für den neuen Knotenpool.
  • GROUP_NAME ist der Name der vorhandenen Knotengruppe für einzelne Mandanten, die Sie verwenden möchten.
  • CLUSTER_NAME ist der Name des Clusters, in dem Sie den Knotenpool erstellen.
  • COMPUTE_REGION stimmt mit der Region des Clusters überein.
  • MACHINE_TYPE ist der Maschinentyp des Knotenpools.
  • COMPUTE_ZONE1, COMPUTE_ZONE2,[...]: die Zonen für die Knotengruppen für einzelne Mandanten.

Eine vollständige Liste der optionalen Flags, die Sie angeben können, finden Sie in der Dokumentation zu gcloud container node-pools create.

Knotenpool mit einem Knoten für einzelne Mandanten mithilfe einer Knotenaffinitätsdatei erstellen

Zum Erstellen eines Knotenpools mithilfe einer freigegebenen Knotengruppe für einzelne Mandanten müssen Sie Knotenaffinitätslabels verwenden. Sie können die Knotenaffinität auch verwenden, um Knotengruppen aus demselben Projekt auszuwählen.

Folgen Sie der Anleitung zum Erstellen eines Knotenpools, um auf Labels zu verweisen. Ersetzen Sie dabei das Flag --node-group durch das Flag --sole-tenant-node-affinity-file. Übergeben Sie eine JSON-Datei mit diesen Labels. Sehen Sie sich zum Beispiel den folgenden Befehl an:

  gcloud container node-pools create sole-tenant-node-pool \
      --sole-tenant-node-affinity-file /path/to/affinity/file --cluster my-cluster \
      --region us-central1 --machine-type n1-standard-4  \
      --node-locations=us-central1-a,us-central1-b,us-central1-c

In den folgenden Abschnitten werden Anwendungsfälle für Knotenaffinitätslabels mit Knoten für einzelne Mandanten beschrieben.

Knotengruppennamen aus einem Projekt angeben

Wenn Sie Knotengruppen für einzelne Mandanten aus einem bestimmten Projekt und Knotengruppennamen verwenden möchten, geben Sie diese Werte in der Knotenaffinitätsdatei an. Sie können diese Affinität verwenden, wenn Sie einen Knotenpool mit mehreren Zonen erstellen, in dem die Namen der Knotengruppen aus jeder Zone übereinstimmen müssen. Wenn Sie eine beliebige Knotengruppe im angegebenen Inhaberprojekt verwenden möchten, lassen Sie den gesamten Block compute-googleapis.com/node-group-name aus der JSON-Datei weg.

Sehen Sie sich folgendes Beispiel an:

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "compute.googleapis.com/node-group-name",
    "operator" : "IN",
    "values" : ["GROUP_NAME"]
  },
]

Benutzerdefinierte Labels angeben

Sie können auch Knotenaffinität und Anti-Affinität verwenden, um einen Knotenpool mithilfe von Knotengruppen mit benutzerdefinierten Labels zu erstellen. Jeder Knotengruppe werden automatisch Standardaffinitätslabels zugewiesen. Sie können auf die Standardlabels verweisen, wie in den vorherigen Beispielen, oder benutzerdefinierte Labels verwenden, die beim Erstellen der Knotenvorlage festgelegt wurden. Sie können benutzerdefinierte Labels verwenden, um Arbeitslasten zu isolieren oder zu gruppieren.

Sehen Sie sich folgendes Beispiel an:

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "workload",
    "operator" : "IN",
    "values" : ["frontend"]
  },
]

Beschränkungen

Wenn Sie einen Knotenpool mit Knoten für einzelne Mandanten erstellen, sind Sie für die Verwaltung der zugrunde liegenden Kapazität für Knotengruppen für einzelne Mandanten verantwortlich. Beachten Sie, wie die folgenden Features mit Knotengruppen für einzelne Mandanten interagieren:

  • Sie können das Cluster-Autoscaling aktivieren. Es wird jedoch durch die Kapazität der zugrunde liegenden Knotengruppe begrenzt. Sie können das Autoscaling für Knotengruppen in Compute Engine so konfigurieren, dass die Größe Ihrer Knotengruppen für einzelne Mandanten automatisch verwaltet wird.
  • Sie können die automatische Knotenbereitstellung für Ihren Cluster nicht aktivieren, wenn Sie Knoten für einzelne Mandanten verwenden.
  • Sie können eine beliebige Strategie für das Upgrade des Knotens verwenden. Sie müssen jedoch darauf achten, dass Sie genügend Kapazität haben, um den Knotenpool mit der ausgewählten Upgradestrategie zu unterstützen.

Nächste Schritte