Instanzattribute aktualisieren

Sie können eine einzelne Anfrage über die Google Cloud CLI oder die Compute Engine API verwenden, um mehrere Instanzattribute zu aktualisieren und die Instanz bei Bedarf optional neu zu starten. Die Aktualisierungsmethode verarbeitet die Logik zur Validierung der aktualisierten Instanzattribute und sorgt dafür, dass die erforderlichen Ressourcen verfügbar sind, um die Aktualisierung erfolgreich abzuschließen. Wenn die Anfrage ungültige Attribute enthält oder die angeforderten Ressourcen nicht verfügbar sind, gibt die Anfrage einen Fehler zurück und nimmt keine Änderungen an Ihrer Instanz vor. Dadurch wird die Instanz vor Teilaktualisierungen geschützt und es wird verhindert, dass die Instanz gestoppt wird und nicht wieder auf für einen Neustart nötige Ressourcen zugreifen kann.

Informationen zum Aktualisieren der Netzwerkschnittstellen (networkInterfaces) einer Instanz finden Sie unter Netzwerkschnittstellen einer Instanz aktualisieren.

Wenn Sie Dynamic Network Interfaces zu einer Instanz hinzufügen oder daraus entfernen möchten, verwenden Sie die folgenden Verfahren, anstatt die Instanzattribute zu aktualisieren:

Hinweis

Beschränkungen

  • Anfragen zur Instanzaktualisierung mit der gcloud CLI oder der Compute Engine API unterstützen keine PATCH-Semantik. Die Instanzressource in der Aktualisierungsanfrage muss alle Attribute der Instanz enthalten. Attribute, die in der Instanzkonfiguration der Aktualisierungsanfrage fehlen, werden als von der Instanz gelöscht betrachtet.
  • Sie können nur bestimmte Liste von Attributen aktualisieren.
  • Wenn an die Instanz lokale SSDs angehängt sind, können Sie keine Attribute aktualisieren, für die die Instanz neu gestartet werden muss, während die Instanz ausgeführt wird. Sie können die Instanz löschen und dann neu erstellen oder die Instanz beenden, die Attribute aktualisieren und die Instanz dann neu starten.
  • Sie können das Attribut networkInterfaces einer Instanz aktualisieren, aber keine virtuellen Netzwerkkarten (vNICs) hinzufügen oder entfernen.
  • Wenn eine Instanz Ressourcen verwendet, die nur in der Betaversion der Compute Engine API verfügbar sind, müssen Sie diese Attribute mit der richtigen Version der Methode instances.update aktualisieren. Wenn Sie zum Beispiel eine Instanz mit der Beta Compute Engine API erstellen und die Instanz mit einer Ressource konfigurieren, die nur die Betaversion der API erkennt, müssen Sie diese Ressourcen auch mit der Betaversion der Methode instances.update aktualisieren. Die v1-Version der Methode instances.update erkennt die Betaressourcen, die von Ihrer Instanz verwendet werden, nicht. Daher werden diese Betaressourcen während des Aktualisierungsprozesses aus der Instanzkonfiguration gelöscht. Dieses Verhalten gilt auch für Ressourcen in der Alpha-API.

Berechtigungen

Zum Aktualisieren von Instanzen benötigen Sie die Berechtigung compute.instances.update. Diese Berechtigung ist in mehreren vorhandenen IAM-Rollen (Identity and Access Management, Identitäts- und Zugriffsverwaltung) enthalten. Sie benötigen außerdem die Berechtigung, die Ressourcen zu verwenden, die Sie auf der Instanz ändern möchten. Wenn Sie einer Instanz beispielsweise ein Laufwerk hinzufügen möchten, benötigen Sie die folgenden Berechtigungen:

  • Die Berechtigung compute.instances.update für die Instanz, die Sie aktualisieren möchten.
  • Entweder die Berechtigung compute.disks.use für ein vorhandenes Laufwerk oder compute.disks.create für ein Projekt, in dem Sie ein neues Laufwerk erstellen möchten.

Best Practices

Achten Sie auf die folgenden Best Practices, damit die Schnittstelle zur Instanzaktualisierung so effektiv wie möglich funktioniert:

  • Verwenden Sie nach Möglichkeit immer dieselbe Version der Compute Engine API, um Instanzen zu erstellen, festzulegen und zu aktualisieren. Dadurch wird sichergestellt, dass Sie alle Instanzressourcen aktualisieren und ändern können, wenn sie nur in einer Version der API verfügbar sind.
  • Sie können die Methode instances.update auch zum Aktualisieren von Instanzen in einer verwalteten Instanzgruppe verwenden. In den meisten Fällen ist es jedoch besser, stattdessen die Instanzvorlage der Gruppe zu ändern und dieses Update auf die verwaltete Instanzgruppe anzuwenden.
  • Wenn Sie eine Ressource aktualisieren, die von der Instanz verwendet wird, verwenden Sie den Befehl zum Aktualisieren dieser Ressourceninstanz anstelle der Instanzeigenschaften, z. B.:
    • Sie können Laufwerke mit der Methode disks.update ändern.
    • Wenn Sie das von der Instanz verwendete Netzwerk ändern möchten, können Sie die Methode instances.updateNetworkInterface verwenden. Dazu muss die Instanz nicht beendet werden.

Attribute, die aktualisiert werden können

Sie können mit der Aktualisierungsmethode nur bestimmte Instanzattribute ändern. Für die Aktualisierung einiger Attribute muss die Instanz neu gestartet werden. Damit versehentliche Neustarts der Instanzen verhindert werden, muss in der Anfrage festgelegt sein, welche Aktion für Ihre Instanzen zulässig ist. Sie können in der Anfrage eine der folgenden Aktionen angeben:

  • NO_EFFECT: Bei der Aktualisierungsanfrage wird geprüft, ob die Anfrage gültig ist und ob die Ressourcen verfügbar sind. Die Aktualisierung wird jedoch nicht ausgeführt. Verwenden Sie diese Aktion, um Befehle zu testen, ohne tatsächliche Aktualisierungen zu starten.
  • REFRESH: Die Aktualisierungsanfrage wird nur ausgeführt, wenn für die geänderten Instanzeigenschaften kein Neustart der Instanz erforderlich ist. Die Anfrage gibt den Fehler INFEASIBLE zurück, wenn die Anfrage gültig ist, aber ein Neustart erforderlich ist.
  • RESTART: Wenn für das Update ein Neustart der Instanz erforderlich ist, wird die Instanz vom System neu gestartet.

Für die Aktualisierung der folgenden Attribute ist ein Neustart (RESTART) erforderlich:

  • disks: Bootlaufwerke, einschließlich aller Laufwerke (disks.deviceName)
  • displayDevice
  • enableNestedVirtualization
  • guestAccelerators
  • machineType
  • minCpuPlatform
  • networkInterfaces
  • networkPerformanceConfig
  • performanceMonitoringUnit
  • reservationAffinity: Sie können die Art und Weise, wie die Instanz Reservierungen (reservationAffinity.consumeReservationType) nutzt, nur so aktualisieren:
    • Von der Nutzung jeder übereinstimmenden Reservierung (ANY_RESERVATION) bis zur Nichtnutzung von Reservierungen (NO_RESERVATION)
    • Von „Keine Reservierungen nutzen“ (NO_RESERVATION) zu „Alle übereinstimmenden Reservierungen nutzen“ (ANY_RESERVATION)
  • resourcePolicies
  • scheduling
  • serviceAccounts
  • shieldedInstanceConfig
  • threadsPerCore
  • visibleCoreCount

Für die Aktualisierung der folgenden Attribute ist nur eine Aktualisierung (REFRESH) erforderlich:

  • canIpForward
  • deletionProtection
  • description
  • disks: Attribute des Nicht-Bootlaufwerks, mit Ausnahme von deviceName
  • labels
  • metadata
  • nodeAffinities
  • tags

Instanzattribute aktualisieren

Führen Sie die folgenden Schritte aus, um Ihre Instanz zu aktualisieren:

  1. Exportieren Sie die vorhandenen Instanzkonfigurationsattribute.
  2. Ändern Sie die Attribute der Instanzkonfiguration.
  3. Führen Sie eine Testanfrage aus, indem Sie die umfangreichste Aktion NO_EFFECT angeben. In der Antwort sind ungültige Felder in der Instanzkonfiguration sowie die Aktion angegeben, die zum Anwenden der Änderungen erforderlich ist.
  4. Wenn die Konfiguration akzeptabel ist, fordern Sie eine Instanzaktualisierung an und geben Sie die umfangreichste Aktion an, die für Ihr Instanzupdate akzeptabel ist.

Der Aktualisierungsvorgang wird nur dann gestartet, wenn Ihre Anfrage die folgenden Anforderungen erfüllt:

  • Das Instanzattribut fingerprint in Ihrer Anfrage muss mit dem fingerprint der Instanz übereinstimmen, die Sie aktualisieren möchten. Dadurch wird verhindert, dass Aktualisierungsanfragen durch andere gleichzeitige für dieselbe Instanz überschrieben werden.
  • Die Attribute in Ihrer Aktualisierungsanfrage müssen gültig sein.
  • Die angeforderten Ressourcen müssen verfügbar sein.
  • Wenn für die Attribute in Ihrer Anfrage die Instanz neu gestartet werden muss, muss in der Anfrage RESTART als zulässige Aktion angegeben sein.

Wenn die Anforderungen erfüllt sind, startet das System den Instanzaktualisierungsvorgang. Andernfalls nimmt das System keine Änderungen an der vorhandenen Instanz oder der zugehörigen Konfiguration vor.

Sie können Aktualisierungen entweder mit der gcloud CLI oder der Compute Engine API initiieren.

gcloud

  1. Verwenden Sie den Befehl instances export, um die vorhandenen Instanzattribute zu exportieren:

    gcloud compute instances export INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --destination=FILE_PATH
    

    Ersetzen Sie dabei Folgendes:

    • INSTANCE_NAME ist der Name der Instanz, die Sie exportieren möchten.
    • PROJECT_ID ist die Projekt-ID für diese Anfrage.
    • ZONE ist die Zone für diese Instanz.
    • FILE_PATH: der Ausgabepfad, unter dem Sie die Instanzkonfigurationsdatei auf Ihrer lokalen Workstation speichern möchten.
  2. Ändern Sie mit einem Texteditor ein oder mehrere Attribute in der exportierten Konfigurationsdatei der Instanz. Informationen dazu, welche Attribute Sie aktualisieren können, finden Sie in der Liste der aktualisierbaren Attribute in diesem Dokument. Wenn Sie beispielsweise den Maschinentyp der Instanz ändern möchten, ändern Sie das Attribut machineType:

    ...
    machineType: https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE
    ...
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID für diese Anfrage.
    • ZONE ist die Zone für diese Instanz.
    • MACHINE_TYPE: der Maschinentyp der Instanz, z. B. n1-standard-2.
  3. Führen Sie mit dem Befehl instances update-from-file eine Testaktualisierung der Zielinstanz aus. Geben Sie das Flag --most-disruptive-allowed-action=NO_EFFECT an. In der Antwort werden falsch konfigurierte Attribute angegeben und es wird festgelegt, ob die Aktion RESTART oder REFRESH erforderlich ist, um die Aktualisierung anzuwenden.

    gcloud compute instances update-from-file INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --source=FILE_PATH \
        --most-disruptive-allowed-action NO_EFFECT
    

    Ersetzen Sie dabei Folgendes:

    • INSTANCE_NAME ist der Name der Instanz, die Sie exportieren möchten.
    • PROJECT_ID ist die Projekt-ID für diese Anfrage.
    • ZONE ist die Zone für diese Instanz.
    • FILE_PATH: der Pfad zur geänderten Instanzkonfigurationsdatei auf Ihrer lokalen Workstation.
  4. Aktualisieren Sie die Zielinstanz mit dem Befehl instances update-from-file. Wenn Sie ein Attribut aktualisieren, für das die Instanz neu gestartet werden muss, fügen Sie das Flag --most-disruptive-allowed-action=RESTART ein. Wenn für die Eigenschaften kein Neustart erforderlich ist, geben Sie das Flag --most-disruptive-allowed-action=REFRESH an. Welche Properties einen Neustart erfordern, erfahren Sie in diesem Dokument in der Liste der aktualisierbaren Properties.

    gcloud compute instances update-from-file INSTANCE_NAME \
        --project PROJECT_ID \
        --zone ZONE \
        --source=FILE_PATH \
        --most-disruptive-allowed-action ALLOWED_ACTION
    

    Ersetzen Sie Folgendes:

    • INSTANCE_NAME ist der Name der Instanz, die Sie exportieren möchten.
    • PROJECT_ID ist die Projekt-ID für diese Anfrage.
    • ZONE ist die Zone für diese Instanz.
    • FILE_PATH: der Pfad zur geänderten Instanzkonfigurationsdatei auf Ihrer lokalen Workstation.
    • ALLOWED_ACTION definiert, wie umfangreich die Aktualisierung sein kann. Geben Sie RESTART an, um einen vollständigen Neustart der Instanz zu ermöglichen. Geben Sie REFRESH an, um die Instanz nur zu aktualisieren, wenn für die geänderten Attribute kein Neustart der Instanz erforderlich ist.

Wenn die Aktualisierungsanfrage gültig ist und die erforderlichen Ressourcen verfügbar sind, beginnt die Instanzaktualisierung. Sie können den Status dieses Vorgangs durch Aufrufen der Audit-Logs überwachen. Wenn das Update einen Neustart erfordert und Ihr Befehl ein RESTART zulässt, wird die Instanz neu gestartet, um die Änderungen zu übernehmen.

REST

  1. Verwenden Sie die Methode instances.get in der Compute Engine API, um die vorhandenen Instanzattribute zu exportieren:

    GET https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
    

    Dabei gilt:

    • PROJECT_ID ist die Projekt-ID für diese Anfrage.
    • ZONE ist die Zone für diese Instanz.
    • INSTANCE_NAME ist der Name der Instanz, die Sie exportieren möchten.

    Diese Anfrage gibt eine Instanzressourcendefinition zurück.

  2. Ändern Sie in der Antwort die Eigenschaften der Instanzressource. Eine Liste der aktualisierbaren Attribute finden Sie in diesem Dokument unter Liste der aktualisierbaren Attribute. Wenn Sie beispielsweise den Maschinentyp der Instanz ändern möchten, ändern Sie das Attribut machineType. Sie können mehrere Attribute ändern.

    {
      ...
      "machineType": "https://www.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/MACHINE_TYPE",
      ...
    }
    

    Dabei gilt:

    • PROJECT_ID ist die Projekt-ID für diese Anfrage.
    • ZONE ist die Zone für diese Instanz.
    • MACHINE_TYPE: der Maschinentyp der Instanz, z. B. n1-standard-2.
  3. Verwenden Sie die Methode instances.update in der Compute Engine API und geben Sie den Abfrageparameter mostDisruptiveAllowedAction=NO_EFFECT an, um ein Test-Update der Zielinstanz auszuführen. In der Antwort werden falsch konfigurierte Attribute angegeben und es wird angezeigt, ob eine RESTART- oder REFRESH-Aktion erforderlich ist, um das Update anzuwenden.

    PUT https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=NO_EFFECT
    
    {
      ...
      "machineType": "https://www.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
      ...
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID für diese Anfrage.
    • ZONE ist die Zone für diese Instanz.
    • INSTANCE_NAME ist der Name der Instanz, die Sie exportieren möchten.
  4. Verwenden Sie die Methode instances.update in der Compute Engine API, um die Zielinstanz zu aktualisieren. Wenn Sie ein Attribut aktualisieren, für das ein Neustart der Instanz erforderlich ist, fügen Sie den Abfrageparameter mostDisruptiveAllowedAction=RESTART ein, um anzugeben, dass die Instanz während der Aktualisierung neu gestartet werden kann. Wenn für die Eigenschaften kein Neustart erforderlich ist, geben Sie den Abfrageparameter mostDisruptiveAllowedAction=REFRESH an. Welche Attribute einen Neustart erfordern, erfahren Sie in der Liste der aktualisierbaren Attribute in diesem Dokument. Fügen Sie den vollständigen Text für die geänderte Instanzressource ein. Im folgenden Beispiel wird der Maschinentyp im Hauptteil in n1-standard-2 geändert:

    PUT https://compute.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=ALLOWED_ACTION
    
    {
      ...
      "machineType": "https://www.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/n1-standard-2",
      ...
    }
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID für diese Anfrage.
    • ZONE ist die Zone für diese Instanz.
    • INSTANCE_NAME ist der Name der Instanz, die Sie exportieren möchten.
    • ALLOWED_ACTION definiert, wie umfangreich die Aktualisierung sein kann. Geben Sie RESTART an, um einen vollständigen Neustart der Instanz zu ermöglichen. Geben Sie REFRESH an, um die Instanz nur zu aktualisieren, wenn für die geänderten Attribute kein Neustart der Instanz erforderlich ist.

Wenn die Aktualisierungsanfrage gültig ist und die erforderlichen Ressourcen verfügbar sind, beginnt die Instanzaktualisierung. Sie können den Status dieses Vorgangs durch Aufrufen der Audit-Logs überwachen. Wenn das Update einen Neustart erfordert und Ihr Befehl ein RESTART zulässt, wird die Instanz neu gestartet, um die Änderungen zu übernehmen.

Nächste Schritte