Cluster- und Knotenpoollabels erstellen und verwalten


Diese Seite bietet eine Übersicht zu Clusterlabels und Knotenpoollabels in Google Kubernetes Engine (GKE).

GKE-Cluster- und -Knotenpoollabels und Kubernetes-Labels

GKE-Cluster- und Knotenpoollabels unterscheiden sich von Labels in Kubernetes. Die beiden Labeling-Systeme funktionieren unabhängig und übernehmen keine Labels oder teilen sie.

GKE-Cluster- und Knotenpoollabels sind beliebige Metadaten, die an Ihre Ressourcen angehängt werden. Sie können damit Nutzungs- und Zahlungsinformationen verfolgen.

Unabhängig davon verwendet das System in Kubernetes Labels intern, um Clusterkomponenten und -ressourcen (z. B. Pods und Knoten) miteinander zu verknüpfen und Ressourcenlebenszyklen zu verwalten. Sie können Kuberneteslabels mit der Kubernetes API bearbeiten. Sie können die GKE API auch verwenden, um Kuberneteslabels auf Ihren Knoten mit Clustererstellung oder mit einem Clusterupdate zu bearbeiten.

Was sind Clusterlabels?

Ein Clusterlabel ist ein Schlüssel/Wert-Paar, das Sie Google Cloud-Clustern zuweisen können. Clusterlabels helfen Ihnen dabei, diese Ressourcen zu organisieren und Ihre Kosten in großem Umfang mit der erforderlichen Detailgenauigkeit zu verwalten. Sie können jeder Ressource ein Label zuweisen und dann die Ressourcen basierend auf ihren Labels filtern. Informationen zu Labels werden an das Abrechnungssystem weitergeleitet, sodass Sie die abgerechneten Gebühren nach Label aufschlüsseln können. Dank integrierter Abrechnungsberichte können Sie Kosten nach Ressourcenlabels filtern und gruppieren. Sie können Labels auch verwenden, um Abrechnungsdatenexporte abzufragen.

Anforderungen für Clusterlabels

Für die auf Ressourcen angewendeten Clusterlabels gilt Folgendes:

  • Jede Ressource kann bis zu 64 Clusterlabels haben.
  • Jedes Clusterlabel muss ein Schlüssel/Wert-Paar sein.
  • Schlüssel haben eine Mindestlänge von einem Zeichen und eine maximale Länge von 63 Zeichen und dürfen nicht leer sein. Werte dürfen leer sein und haben eine maximale Länge von 63 Zeichen.
  • Schlüssel und Werte dürfen nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche enthalten. Alle Zeichen müssen UTF-8-codiert sein. Internationale Zeichen sind zulässig. Schlüssel müssen mit einem Kleinbuchstaben oder einem internationalen Zeichen beginnen.
  • Der Schlüsselabschnitt eines Cluster-Labels darf in einer einzelnen Ressource nur einmal vorkommen. Sie können jedoch denselben Schlüssel für mehrere Ressourcen verwenden.

Die Limits gelten für den Schlüssel und den Wert für jedes Clusterlabel und für die einzelnen Google Cloud-Ressourcen, die Clusterlabels haben. Es gibt keine Beschränkung, wie viele Clusterlabels Sie auf alle Ressourcen in einem Projekt anwenden können.

Einsatzmöglichkeiten von Clusterlabels

Im Folgenden werden einige gängige Anwendungsfälle für Clusterlabels aufgeführt:

  • Clusterlabels für Teams oder Kostenstellen: Fügen Sie Labels basierend auf einem Team oder einer Kostenstelle hinzu, um zwischen den Clustern zu unterscheiden, die verschiedenen Teams angehören (z. B. team:research und team:analytics). Sie können diese Art von Label für die Kostenabrechnung oder Budgetplanung nutzen.

  • Clusterlabels für Komponenten: Zum Beispiel component:redis, component:frontend, component:ingest und component:dashboard.

  • Clusterlabels für Umgebungen oder Stagings: Zum Beispiel environment:production und environment:test.

  • Clusterlabels für Zustände: Zum Beispiel state:active, state:readytodelete und state:archive.

  • Clusterlabels für Eigentumsrechte: Werden verwendet, um die Teams zu identifizieren, die für den Betrieb verantwortlich sind, z. B. team:shopping-cart.

Es wird empfohlen, nicht zu viele eindeutige Labels zu erstellen, etwa für Zeitstempel oder einzelne Werte für einzelne API-Aufruf. Das Problem bei diesem Ansatz besteht darin, dass es schwierig ist, Ressourcen effektiv zu filtern und Berichte über sie zu erstellen, wenn sich die Werte häufig ändern oder wenn Schlüssel verwendet werden, die den Katalog überlasten.

Labels und Tags

Labels können als abfragbare Annotationen für Ressourcen verwendet werden, aber nicht zum Festlegen von Bedingungen für Richtlinien. Mit Tags können Sie Richtlinien auf Basis der Bedingung genehmigen oder ablehnen, ob eine Ressource ein bestimmtes Tag hat. Dazu müssen Sie eine detaillierte Richtlinienkontrolle ermöglichen. Weitere Informationen finden Sie in der Tag-Übersicht.

Automatisch angewendete Labels

GKE wendet automatisch mehrere Labels auf Clusterressourcen an.

GKE wendet beispielsweise Labels auf Compute Engine-Instanzen, nichtflüchtige Speicher und Beschleuniger (TPUs) an.

Die folgende Tabelle enthält die -Labels, die GKE automatisch auf Ressourcen anwendet:

Label Angewendete Ressourcen
goog-gke-node Compute Engine-VM-Instanz, die einem GKE-Knoten zugrunde liegt
goog-gke-volume Nichtflüchtiger Compute Engine-Speicher, der an eine VM-Instanz angehängt ist, die einem GKE-Knoten zugrunde liegt
goog-gke-tpu Cloud TPU in GKE
goog-k8s-cluster-name Compute Engine-VM-Instanz und nichtflüchtige Speicher, die an eine VM-Instanz angehängt sind, die einem GKE-Knoten zugrunde liegt
goog-k8s-cluster-location Compute Engine-VM-Instanz und nichtflüchtige Speicher, die an eine VM-Instanz angehängt sind, die einem GKE-Knoten zugrunde liegt
goog-k8s-node-pool-name Compute Engine-VM-Instanzen und ihre Boot-Laufwerke, die einem GKE-Knoten zugrunde liegen
goog-fleet-project Compute Engine-VM-Instanz und nichtflüchtige Speicher, die an eine VM-Instanz angehängt sind, die einem GKE-Knoten zugrunde liegt, wenn der Cluster bei einer Flotte registriert ist

Bearbeiten und löschen Sie keine reservierten Labels. Alle Änderungen, die Sie an reservierten -Labels vornehmen, werden automatisch abgeglichen.

Labelverteilung

In GKE können Sie Labels auf Cluster und Knotenpools im Standardmodus anwenden. Wenn Sie einen Cluster mit einem Label versehen, wird dieses Label an alle einzelnen Ressourcen des Clusters weitergegeben, z. B. an Knoten, Instanzen und nichtflüchtige Speicher. Wenn Sie einen Knotenpool mit einem Label versehen, wird dieses Label an die einzelnen Ressourcen des Knotenpools wie Instanzen und nichtflüchtige Speicher weitergegeben. Wenn in Standardclustern die Clusterlabels mit Knotenpoollabels in Konflikt stehen, z. B. wenn der Labelschlüssel derselbe ist, der Wert aber unterschiedlich ist, haben Knotenpoollabels Vorrang vor den Clusterlabels.

Alle Labels, die Sie auf Ihre Cluster oder Knotenpools anwenden, werden stündlich über einen Hintergrundprozess weitergegeben. Es kann bis zu eine Stunde dauern, bis ein Label auf alle Ressourcen in einem Cluster angewendet wurde. Darüber hinaus werden Labels nur an Compute Engine-Instanzen und nichtflüchtige Speicher weitergegeben, die an Compute Engine-Instanzen angehängt sind. Andere Ressourcen wie Arbeitslasten, Weiterleitungsregeln, IP-Adressen und nicht angehängte nichtflüchtige Speicher erhalten kein Label.

Wenn in Standardclustern Cluster- und Knotenpool-Labels auf Compute Engine-Ressourcen angewendet werden, können Sie die Ressourcenlabels manuell ändern, ohne dass diese Änderungen von GKE genehmigt werden. In Autopilot-Clustern können Sie die Labels für die Compute Engine-Ressourcen nicht manuell ändern, da GKE die Knoten für Sie verwaltet. Wir empfehlen jedoch, diese Labels über GKE zu verwalten. Vorhandene Labels für diese Compute Engine-Ressourcen werden von GKE nicht entfernt, es sei denn, sie stehen im Widerspruch zu den automatisch angewendeten Labels.

Hinweis

Führen Sie die folgenden Schritte durch, 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.

Labelfingerabdrücke für API-Requests abrufen

Sie können diesen Schritt überspringen, wenn Sie die Google Cloud Console oder die gcloud CLI verwenden.

Wenn Sie Labels in der GKE API aktualisieren oder einfügen, müssen Sie mit der Anfrage den neuesten Clusterlabel-Fingerabdruck angeben, um Konflikte mit anderen Anfragen zu vermeiden.

Stellen Sie eine GET-Anfrage beim entsprechenden Cluster, um den neuesten Clusterlabel-Fingerabdruck abzurufen. Beispiel:

GET https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster

Die Ausgabe sieht etwa so aus:

200 OK

{

 "name": "mycluster",
 "description": "production-cluster",
 "initialNodeCount": 3,
 ...
 "resourceLabels": {
    "environment": "production",
    ...
  },
  "labelFingerprint": "p1ty_9HoBk0="
}

In dieser Ausgabe ist das Attribut labelFingerprint der Fingerabdruck des Clusterlabels.

Cluster mit Labels erstellen

Sie können mithilfe der gcloud CLI, der Google Cloud Console, der GKE API oder Terraform Autopilot- und Standard-Cluster mit Labels erstellen.

gcloud

Führen Sie den folgenden Befehl aus, um einen Autopilot-Cluster mit Labels zu erstellen:

gcloud container clusters create-auto CLUSTER_NAME \
    --labels=KEY=VALUE

Mit dem folgenden Befehl erstellen Sie einen Standard-Cluster mit Labels:

gcloud container clusters create CLUSTER_NAME \
    --labels=KEY=VALUE

Ersetzen Sie Folgendes:

  • CLUSTER_NAME ist der Name des Clusters.
  • KEY: Der Schlüssel für das Schlüssel/Wert-Paar des Labels.
  • VALUE: Der Wert für das Schlüssel/Wert-Paar des Labels.

Console

So fügen Sie beim Erstellen eines Clusters Labels hinzu:

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

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie auf Erstellen.

  3. Konfigurieren Sie den Cluster.

  4. Klicken Sie im Navigationsbereich unter Cluster auf Metadaten.

  5. Klicken Sie auf Label hinzufügen.

  6. Fügen Sie Labels hinzu.

  7. Klicken Sie auf Erstellen.

API

Wenn Sie beim Erstellen eines Clusters ein Label einfügen möchten, geben Sie das Objekt resourceLabels im Objekt cluster an, das Sie für projects.zones.clusters.create zur Verfügung stellen.

Terraform

Informationen zum Erstellen eines Autopilot-Clusters mit Labels mit Terraform finden Sie im folgenden Beispiel:

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-labels"
  location = "us-central1"

  enable_autopilot = true

  resource_labels = {
    foo = "bar"
  }

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Informationen zum Erstellen eines Standardclusters mit Labels mit Terraform finden Sie im folgenden Beispiel:

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-labels"
  location           = "us-west1"
  initial_node_count = 2

  resource_labels = {
    foo = "bar"
  }

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Weitere Informationen zur Verwendung von Terraform finden Sie unter Terraform-Unterstützung für GKE.

Labels zu vorhandenen Clustern hinzufügen oder aktualisieren

Sie können Labels über die gcloud CLI, die Google Cloud Console oder die GKE API für bestehende Autopilot- oder Standardcluster hinzufügen oder aktualisieren.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container clusters update CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --update-labels=KEY=VALUE

Ersetzen Sie dabei Folgendes:

  • CLUSTER_NAME: Der Name Ihres Clusters.
  • COMPUTE_REGION: die Compute Engine-Region für den neuen Cluster. Verwenden Sie für zonale Standardcluster --zone=COMPUTE_ZONE.
  • KEY: Der Schlüssel für das Schlüssel/Wert-Paar des Labels.
  • VALUE: Der Wert für das Schlüssel/Wert-Paar des Labels.

Durch die Labelaktualisierung werden alle vorhandenen Labels im Cluster überschrieben. Wenn Sie vorhandene Labels des Clusters übernehmen möchten, müssen Sie diese Labels zusammen mit allen neu hinzuzufügenden Labels in die Anfrage aufnehmen.

Console

So fügen Sie Labels hinzu oder aktualisieren sie:

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

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie auf der Seite Clusterdetails auf die Kästchen für einen oder mehrere Cluster, die Sie ändern möchten.

  3. Klicken Sie auf Labels.

  4. Fügen Sie Labels hinzu oder aktualisieren Sie welche.

  5. Klicken Sie auf Speichern.

API

Senden Sie eine POST-Anfrage an die Methode resourceLabels des Clusters. Die Anfrage muss den neuesten Fingerabdruck und eine vollständige Liste der anzuwendenden Labels enthalten.

Wenn Sie die bisherigen Labels des Clusters übernehmen möchten, muss die Anfrage, ähnlich wie bei Metadaten und Tags, neben den neu hinzuzufügenden auch diese bisherigen Labels enthalten.

Durch das folgende Snippet wird beispielsweise eine Anfrage an die Methode resourceLabels gestellt:

POST https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster/resourceLabels

{
 "resourceLabels": {
  "environment": "production",
  "an-existing-tag": ""
 },
 "labelFingerprint": "42WmSpB8rSM="
}

Clusterlabels entfernen

Sie können Labels aus Autopilot- und Standardclustern über die gcloud CLI, die Google Cloud Console oder die GKE API entfernen.

gcloud

Führen Sie den Befehl update mit dem Flag --remove-labels aus:

gcloud container clusters update CLUSTER_NAME \
    --remove-labels=KEYS

Dabei gilt:

  • CLUSTER_NAME ist der Name des Clusters.
  • KEYS ist eine durch Kommas getrennte Liste von Schlüsseln für die Labels, die Sie entfernen möchten.

Console

So entfernen Sie Labels:

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

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf die Kästchen für einen oder mehrere Cluster, die Sie ändern möchten.

  3. Klicken Sie auf Labels.

  4. Klicken Sie für die Labels, die Sie löschen möchten, neben dem Feld Wert auf Element löschen.

  5. Klicken Sie auf Speichern.

API

Stellen Sie für den entsprechenden Cluster eine POST-Anfrage an die Methode resourceLabels. Geben Sie den aktuellen labelsFingerprint und eine leere Labelliste an, um alle Labels zu entfernen, oder geben Sie eine Liste mit den Labels an, die Sie beibehalten möchten. Geben Sie in diesem Fall nicht die Labels an, die Sie entfernen möchten. Beispiel:

Request

POST https://container.googleapis.com/v1/projects/myproject/zones/us-central1-f/clusters/example-cluster/resourceLabels

{
 "resourceLabels": { },
 "labelFingerprint": "42WmSpB8rSM="
}

Standard-Knotenpool mit Labels erstellen

Sie können einen Knotenpool mit Labels in einem Standardcluster mit der gcloud CLI, der Google Cloud Console oder der GKE API erstellen.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --labels=KEY=VALUE

Dabei gilt:

  • NODE_POOL_NAME ist der Name des Knotenpools.
  • CLUSTER_NAME ist der Name des Clusters.
  • COMPUTE_REGION: die Compute Engine-Region für den Cluster. Verwenden Sie für zonale Cluster --zone=COMPUTE_ZONE.
  • KEY: Der Schlüssel für das Schlüssel/Wert-Paar des Labels.
  • VALUE: Der Wert für das Schlüssel/Wert-Paar des Labels.

API

Wenn Sie beim Erstellen eines Knotenpools ein Label einfügen möchten, geben Sie das Objekt resourceLabels im Knotenpoolobjekt an, das Sie für projects.zones.clusters.nodePools.create bereitstellen.

Console

So fügen Sie einem neuen Knotenpool Labels hinzu:

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

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie auf der Seite Clusterdetails auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf Knotenpool hinzufügen .

  4. Konfigurieren Sie den neuen Knotenpool.

  5. Klicken Sie im Navigationsbereich auf Metadaten.

  6. Klicken Sie auf Label hinzufügen.

  7. Fügen Sie Labels hinzu.

  8. Klicken Sie auf Erstellen.

Labels zu einem vorhandenen Knotenpool hinzufügen oder aktualisieren

Sie können Labels über die gcloud CLI, die Google Cloud Console oder die GKE API hinzufügen oder aktualisieren.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --labels=KEY=VALUE

Dabei gilt:

  • NODE_POOL_NAME ist der Name des Knotenpools.
  • CLUSTER_NAME ist der Name des Clusters.
  • COMPUTE_REGION: die Compute Engine-Region für den Cluster. Verwenden Sie für zonale Cluster --zone=COMPUTE_ZONE.
  • KEY: Der Schlüssel für das Schlüssel/Wert-Paar des Labels.
  • VALUE: Der Wert für das Schlüssel/Wert-Paar des Labels.

Durch die Labelaktualisierung werden alle vorhandenen Labels im Knotenpool überschrieben. Wenn Sie vorhandene Labels des Knotenpools übernehmen möchten, müssen Sie diese Labels zusammen mit allen neu hinzuzufügenden Labels in die Anfrage aufnehmen.

API

Wenn Sie beim Ändern des Knotenpools ein Label einfügen möchten, geben Sie das Objekt resourceLabels im Knotenpoolobjekt an, das Sie für projects.zones.clusters.nodePools.update bereitstellen.

Console

So fügen Sie Labels hinzu oder aktualisieren sie:

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

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, der den Knotenpool enthält, den Sie ändern möchten.

  3. Klicken Sie im Bereich Knotenpools auf den Namen des Knotenpools, dessen Größe Sie anpassen möchten.

  4. Klicken Sie auf Bearbeiten .

  5. Fügen Sie im Bereich Labels Labels hinzu oder aktualisieren Sie welche.

  6. Klicken Sie auf Speichern.

Knotenpoollabels entfernen

Sie können Labels aus Knotenpools mithilfe der gcloud CLI, der Google Cloud Console oder der GKE API entfernen.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --labels=KEY=VALUE

Dabei gilt:

  • NODE_POOL_NAME ist der Name des Knotenpools.
  • CLUSTER_NAME ist der Name des Clusters.
  • COMPUTE_REGION: die Compute Engine-Region für den Cluster. Verwenden Sie für zonale Cluster --zone=COMPUTE_ZONE.
  • KEY: Der Schlüssel für das Schlüssel/Wert-Paar des Labels.
  • VALUE: Der Wert für das Schlüssel/Wert-Paar des Labels.

Durch die Labelaktualisierung werden alle vorhandenen Labels im Knotenpool überschrieben. Wenn der Knotenpool bereits vorhandene Labels hat, die Sie beibehalten möchten, müssen Sie alle Labels ausschließen, die Sie entfernen möchten. Wenn Sie alle Labels entfernen möchten, verwenden Sie --labels= ohne Schlüssel/Wert-Paare.

API

Wenn Sie beim Ändern des Knotenpools ein Label einfügen möchten, geben Sie das Objekt resourceLabels im Knotenpoolobjekt an, das Sie für projects.zones.clusters.nodePools.update bereitstellen. Geben Sie eine leere Labelliste an, um alle Labels zu entfernen, oder geben Sie eine Liste mit den Labels an, die Sie beibehalten möchten. Lassen Sie die zu entfernenden Labels weg.

Console

So entfernen Sie Labels aus einem Knotenpool:

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

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, der den Knotenpool enthält, den Sie ändern möchten.

  3. Klicken Sie im Bereich Knotenpools auf den Namen des Knotenpools, dessen Größe Sie anpassen möchten.

  4. Klicken Sie für die Labels, die Sie löschen möchten, neben dem Feld Wert auf Element löschen.

  5. Klicken Sie auf Speichern.

Nächste Schritte

GKE-Übersicht