Reservierte zonale Ressourcen nutzen

Kunden können Compute Engine-Instanzen in einer bestimmten Zone reservieren, um sicherzustellen, dass bei Bedarf Ressourcen für ihre Arbeitslasten verfügbar sind. Weitere Informationen zum Verwalten von Reservierungen finden Sie unter Zonale Compute Engine-Ressourcen reservieren.

Nachdem Sie Reservierungen erstellt haben, können Sie GKE-Cluster (Google Kubernetes Engine) und Knotenpools erstellen, um die reservierten Instanzen zu nutzen. GKE unterstützt dieselben Nutzungsmodi wie Compute Engine:

Vorbereitung

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

Mit den folgenden Methoden können Sie die gcloud-Einstellungen festlegen:

  • Verwenden Sie gcloud init, wenn Sie die Standardeinstellungen ansehen möchten.
  • Verwenden Sie gcloud config, um Ihre Projekt-ID, Zone und Region individuell festzulegen.

gcloud init verwenden

Wenn Sie die Fehlermeldung One of [--zone, --region] must be supplied: Please specify location erhalten, führen Sie diesen Abschnitt aus.

  1. Führen Sie gcloud init aus und folgen Sie der Anleitung:

    gcloud init

    Wenn Sie SSH auf einem Remote-Server verwenden, können Sie mit dem Flag --console-only verhindern, dass mit dem Befehl ein Browserfenster geöffnet wird:

    gcloud init --console-only
  2. Folgen Sie der Anleitung, um gcloud zur Verwendung Ihres Google Cloud-Kontos zu autorisieren.
  3. Erstellen Sie eine neue Konfiguration oder wählen Sie eine vorhandene aus.
  4. Wählen Sie ein Google Cloud-Projekt aus.
  5. Wählen Sie eine Compute Engine-Standardzone aus.

gcloud config verwenden

  • Legen Sie Ihre standardmäßige Projekt-ID fest:
    gcloud config set project project-id
  • Wenn Sie mit zonalen Clustern arbeiten, legen Sie die Compute-Standardzone fest:
    gcloud config set compute/zone compute-zone
  • Wenn Sie mit regionalen Clustern arbeiten, legen Sie die Standardregion für Compute Engine fest:
    gcloud config set compute/region compute-region
  • Aktualisieren Sie gcloud auf die neueste Version:
    gcloud components update

Reservierte Instanzen in GKE nutzen

Sie können den Nutzungsmodus für die Reservierung mit dem Flag --reservation-affinity angeben, wenn Sie einen Cluster oder Knotenpool erstellen.

Jede übereinstimmende Reservierung nutzen

Wenn Sie automatisch jede übereinstimmende Reservierung nutzen möchten, setzen Sie das Flag für die Reservierungsaffinität auf --reservation-affinity=any.

Im Reservierungsmodus any nutzen Knoten zuerst Kapazitäten aus übereinstimmenden Reservierungen in derselben Zone. Wenn dies nicht ausreicht, wird zusätzlich der allgemeine Compute Engine-Ressourcenpool genutzt. Weitere Informationen dazu, wie Compute Engine Reservierungen zuordnet, finden Sie unter Funktionsweise von Reservierungen.

Führen Sie die folgenden Schritte aus, um eine Reservierung und Instanzen zu erstellen, die eine beliebige Reservierung nutzen:

  1. Erstellen Sie eine Reservierung von drei VM-Instanzen:

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE --vm-count=3
    

    Dabei gilt:

    • RESERVATION_NAME: Der Name der Reservierung, die erstellt werden soll.
    • MACHINE_TYPE: Der für die Reservierung zu verwendende Maschinentyp (nur Name). Beispiel: n1-standard-2
  2. Prüfen Sie, ob die Reservierung erfolgreich erstellt wurde:

    gcloud compute reservations describe RESERVATION_NAME
    

    Ersetzen Sie RESERVATION_NAME durch den Namen der Reservierung, die Sie gerade erstellt haben.

  3. Erstellen Sie einen Cluster mit einem Knoten, der eine beliebige übereinstimmende Reservierung nutzt:

    gcloud container clusters create CLUSTER_NAME \
        --machine-type=MACHINE_TYPE --num-nodes=1 \
        --reservation-affinity=any
    

    Dabei gilt:

    • CLUSTER_NAME: Der Name des zu erstellenden Clusters.
    • MACHINE_TYPE: Der für den Cluster zu verwendende Maschinentyp (nur Name). Zum Beispiel n1-standard-2.
  4. Erstellen Sie einen Knotenpool mit drei Knoten, der eine beliebige übereinstimmende Reservierung nutzt:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME --num-nodes=3 \
        --machine-type=MACHINE_TYPE --reservation-affinity=any
    

    Dabei gilt:

    • NODEPOOL_NAME: Der Name des Knotenpools, der erstellt werden soll.
    • CLUSTER_NAME: Der Name des Clusters, den Sie zuvor erstellt haben.
    • MACHINE_TYPE: Der für den Knotenpool zu verwendende Maschinentyp (nur Name). Zum Beispiel n1-standard-2.

Die Gesamtzahl der Knoten beträgt vier, was die Kapazität der Reservierung übersteigt. Drei der Knoten nutzen die Reservierung, während der letzte Knoten Kapazität aus dem allgemeinen Compute Engine-Ressourcenpool nimmt.

Eine bestimmte Reservierung nutzen

Wenn Sie eine bestimmte Reservierung nutzen möchten, setzen Sie das Reservierungsaffinitäts-Flag auf --reservation-affinity=specific und geben Sie den spezifischen Reservierungsnamen an. In diesem Modus müssen Instanzen Kapazität aus der angegebenen Reservierung in der Zone nutzen. Die Anfrage schlägt fehl, wenn die Reservierung nicht über ausreichende Kapazität verfügt.

Führen Sie die folgenden Schritte aus, um eine Reservierung und Instanzen zu erstellen, die eine bestimmte Reservierung nutzen:

  1. Erstellen Sie eine bestimmte Reservierung von drei VM-Instanzen:

    gcloud compute reservations create RESERVATION_NAME \
        --machine-type=MACHINE_TYPE --vm-count=3 \
        --require-specific-reservation
    

    Dabei gilt:

    • RESERVATION_NAME: Der Name der Reservierung, die erstellt werden soll.
    • MACHINE_TYPE: Der für die Reservierung zu verwendende Maschinentyp (nur Name). Beispiel: n1-standard-2
  2. Erstellen Sie einen Cluster mit einem Knoten, der eine beliebige übereinstimmende Reservierung nutzt:

    gcloud container clusters create CLUSTER_NAME \
        --machine-type=MACHINE_TYPE --num-nodes=1 \
        --reservation-affinity=specific --reservation=RESERVATION_NAME
    

    Dabei gilt:

    • CLUSTER_NAME: Der Name des zu erstellenden Clusters.
    • MACHINE_TYPE: Der für den Cluster zu verwendende Maschinentyp (nur Name). Zum Beispiel n1-standard-2.
    • RESERVATION_NAME: Der Name Reservierung, die genutzt werden soll.
  3. Erstellen Sie einen Knotenpool mit zwei Knoten, der eine beliebige übereinstimmende Reservierung nutzt:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME --num-nodes=2 \
        --machine-type=MACHINE_TYPE \
        --reservation-affinity=specific --reservation=RESERVATION_NAME
    

    Dabei gilt:

    • NODEPOOL_NAME: Der Name des Knotenpools, der erstellt werden soll.
    • CLUSTER_NAME: Der Name des Clusters, den Sie zuvor erstellt haben.
    • MACHINE_TYPE: Der für den Knotenpool zu verwendende Maschinentyp (nur Name). Zum Beispiel n1-standard-2.
    • RESERVATION_NAME: Der Name Reservierung, die genutzt werden soll.

Weitere wichtige Aspekte der Nutzung einer bestimmten Reservierung

Wenn ein Knotenpool mit einer Affinität zu einer bestimmten Reservierung erstellt wird, einschließlich Standardknotenpools während der Clustererstellung, ist seine Größe über die gesamte Lebensdauer des Knotenpools auf die Kapazität der spezifischen Reservierung beschränkt. Dies betrifft die folgenden GKE-Features:

  • Cluster mit mehreren Zonen: In regionalen oder multizonalen Clustern können sich Knoten eines Knotenpools über mehrere Zonen erstrecken. Da Reservierungen immer in nur einer Zone liegen, sind mehrere Reservierungen erforderlich. Wenn Sie einen Knotenpool erstellen möchten, der eine bestimmte Reservierung in diesen Clustern nutzt, müssen Sie in jeder Zone des Knotenpools eine bestimmte Reservierung mit exakt demselben Namen und denselben Maschineneigenschaften erstellen.
  • Cluster-Autoscaling/-Surge-Upgrade: Wenn Sie in der spezifischen Reservierung keine zusätzliche Kapazität haben, schlagen Surge-Upgrades oder das Autoscaling des Knotenpools möglicherweise fehl, da beide Vorgänge das Erstellen zusätzlicher Instanzen erfordern. Dieses Problem können Sie so beheben: Ändern Sie die Größe der Reservierung oder geben Sie einige von deren gebundenen Ressourcen frei.

Knoten ohne Nutzung von Reservierungen erstellen

Wenn Sie die Nutzung von Ressourcen aus Reservierungen explizit verhindern möchten, setzen Sie die Affinität auf --reservation-affinity=none.

  1. Erstellen Sie einen Cluster, der eine beliebige übereinstimmende Reservierung nutzt:

    gcloud container clusters create CLUSTER_NAME --reservation-affinity=none
    

    Ersetzen Sie CLUSTER_NAME durch den Namen des zu erstellenden Clusters.

  2. Erstellen Sie einen Knotenpool, der eine beliebige übereinstimmende Reservierung nutzt:

    gcloud container node-pools create NODEPOOL_NAME \
        --cluster CLUSTER_NAME \
        --reservation-affinity=none
    

    Dabei gilt:

    • NODEPOOL_NAME: Der Name des Knotenpools, der erstellt werden soll.
    • CLUSTER_NAME: Der Name des Clusters, den Sie zuvor erstellt haben.

Bereinigen

Führen Sie eine Bereinigung durch, um zu vermeiden, dass Ihrem Google Cloud-Konto die auf dieser Seite verwendeten Ressourcen in Rechnung gestellt werden:

  1. Löschen Sie die erstellten Cluster mit dem folgenden Befehl für jeden Cluster:

    gcloud container clusters delete CLUSTER_NAME
    
  2. Löschen Sie die von Ihnen erstellten Reservierungen mit dem folgenden Befehl für jede Reservierung:

    gcloud compute reservations delete RESERVATION_NAME
    

Nächste Schritte