Präemptive Kapazität für das Provisioning von Worker-Knoten verwenden

Erfahren Sie, wie Sie präemptive Kapazität für Compute-Instanzen angeben, die Worker-Knoten in den Knotenpools von Clustern hosten, die Sie mit der Kubernetes Engine (OKE) erstellt haben.

Wenn Sie die Platzierungskonfiguration eines Knotenpools mit Kubernetes Engine definieren, können Sie präemptive Kapazität als Kapazitätstyp für Compute-Instanzen angeben, die Worker-Knoten im Knotenpool hosten. Durch die Angabe präemptiver Kapazität können Sie Geld sparen, indem Sie präemptive Instanzen für Workloads verwenden, die nur für kurze Zeiträume ausgeführt werden müssen oder die unterbrochen werden können, wenn die Kapazität zurückgefordert wird.

Präemptive Instanzen verhalten sich wie normale Compute-Instanzen, aber die Kapazität wird zurückgefordert, wenn sie an anderer Stelle benötigt wird, und die Instanzen werden beendet. Wenn Workloads fehlertolerant sind und Unterbrechungen standhalten können, können präemptive Instanzen die Kosten senken. Beispiel: Mit präemptiven Instanzen können Sie die Kosten für Workloads optimieren, die Unterbrechungen tolerieren können, etwa Tests, die gestoppt und später wiederaufgenommen werden können. Weitere Informationen finden Sie unter Präemptive Instanzen.

Wenn eine präemptive Instanz, die einen Worker-Knoten hostet, beendet werden soll, wird die Kubernetes-Engine benachrichtigt. Bevor die Knoteninstanz beendet wird, führt die Kubernetes-Engine Folgendes aus:

  • Cordoniert den Worker-Knoten, um zu verhindern, dass der Kube-Scheduler neue Pods auf diesen Knoten platziert
  • entleert den Worker-Knoten, um Pods sicher zu entfernen, und stellt sicher, dass die Container des Pods ordnungsgemäß beendet und alle erforderlichen Bereinigungen ausgeführt werden

Nachdem eine präemptive Instanz, die einen Worker-Knoten hostet, beendet wurde, versucht die Kubernetes-Engine, eine neue präemptive Instanz als Ersatz zu erstellen. Wenn die Kubernetes-Engine nach mehreren Versuchen keine präemptive Ersatzinstanz erstellen kann, wird eine Nachricht ausgegeben.

Wenn Sie präemptive Kapazität als Kapazitätstyp für einen Knotenpool auswählen:

  • Die Kubernetes-Engine fügt den Worker-Knoten, die auf präemptiven Instanzen gehostet werden, automatisch ein Kubernetes-Label oci.oraclecloud.com/oke-is-preemptible=true hinzu. Sie können das Label mit Kubernetes-Knotenselektoren und Knotenaffinität/Antiaffinität verwenden, um zu steuern, welche Pods auf diesen Worker-Knoten geplant werden. Siehe Pods zu Knoten zuweisen in der Kubernetes-Dokumentation.
  • Die Kubernetes Engine fügt den Worker-Knoten, die auf präemptiven Instanzen gehostet werden, automatisch eine Kubernetes-Taint oci.oraclecloud.com/oke-is-preemptible hinzu. Mit den Kubernetes-Toleranzen können Sie steuern, welche Pods auf diesen Worker-Knoten geplant werden. Siehe Taints and Tolerations in der Kubernetes-Dokumentation.
  • Sie können angeben, ob die Boot-Volumes, die an die präemptiven Instanzen angehängt sind, die Worker-Knoten hosten, endgültig gelöscht werden, wenn die Instanzen beendet werden.

Beachten Sie Folgendes:

  • Viele, aber nicht alle Compute-Ausprägungen unterstützen präemptive Instanzen. Beachten Sie insbesondere, dass präemptive Instanzen von Bare-Metal-Ausprägungen nicht unterstützt werden. Sie können keinen Knotenpool mit dem Kapazitätstyp "Präemptive Kapazität" erstellen, wenn die Ausprägung des Knotenpools keine präemptiven Instanzen unterstützt. Ebenso können Sie den Kapazitätstyp eines Knotenpools nicht in präemptive Kapazität ändern, wenn die Ausprägung des Knotenpools keine präemptiven Instanzen unterstützt.
  • Für präemptive Instanzen gibt es eine Reihe von Einschränkungen. Siehe Support und Einschränkungen.
  • Änderungen, die Sie an Worker-Knoteneigenschaften vornehmen, gelten nur für neue Worker-Knoten. Die Aktualisierung des einem Knotenpool zugeordneten Kapazitätstyps wirkt sich nicht auf die Eigenschaften vorhandener Worker-Knoten aus.

Best Practices bei der Verwendung von präemptiver Kapazität

Wenn Sie die präemptive Kapazität als Kapazitätstyp für einen Knotenpool auswählen, sollten Sie die folgenden Best Practices berücksichtigen:

  • Präemptive Instanzen eignen sich am besten für fehlertolerante containerisierte Workloads. Gehen Sie beim Entwerfen von Anwendungen, die möglicherweise auf präemptiven Instanzen ausgeführt werden, davon aus, dass die präemptive Kapazität jederzeit zurückgefordert (und die präemptiven Instanzen beendet) werden kann.
  • Verwenden Sie Kubernetes-Knotenselektoren und Knotenaffinität/Antiaffinität zusammen mit Kubernetes-Taints und -Toleranzen, um sicherzustellen, dass nur fehlertolerante Workloads auf präemptiven Instanzen ausgeführt werden. Siehe Pods zu Knoten zuweisen in der Kubernetes-Dokumentation.
  • Oracle empfiehlt, dass Sie keine präemptive Kapazität als Kapazitätstyp für den primären Knotenpool in einem Cluster angeben. Geben Sie stattdessen nur präemptive Kapazität für zusätzliche Knotenpools an, die den primären Knotenpool des Clusters ergänzen.
  • Oracle empfiehlt, dass Sie die Situation vermeiden, in der ein Knotenpool eine Mischung aus Kapazitätstypen aufweist. Obwohl eine Mischung aus Kapazitätstypen in demselben Knotenpool unterstützt wird, empfiehlt Oracle, dass alle Worker-Knoten im Knotenpool denselben Kapazitätstyp aufweisen, um die Verwaltung von Knotenpools zu vereinfachen. Beispiel: Oracle empfiehlt, dass Sie:
    • Angabe von On-Demand-Kapazität in einer Availability-Domain und präemptiver Kapazität in einer zweiten Availability-Domain vermeiden
    • Ändern des Kapazitätstyps von On-Demand-Kapazität in präemptive Kapazität bei der Skalierung eines Knotenpools zum Hinzufügen weiterer Knoten vermeiden

Konsole verwenden

Cluster erstellen und präemptive Kapazität angeben

  1. Befolgen Sie die Anweisungen zum Erstellen eines Clusters mit dem Workflow "Benutzerdefinierte Erstellung". Siehe Cluster mit explizit definierten Einstellungen im Workflow "Benutzerdefinierte Erstellung" mit der Konsole erstellen.
  2. Bei der Angabe der Platzierungskonfiguration für einen Knotenpool im Cluster:
    1. Geben Sie die erste Availability-Domain und das erste Subnetz an:
      • Availability-Domain: Wählen Sie die Availability-Domain aus, in der Worker-Knoten abgelegt werden sollen.
      • Faultdomain: (Optional) Eine oder mehrere Faultdomains in der Availability-Domain, in der Worker-Knoten platziert werden sollen.
      • Subnetz: Wählen Sie das Subnetz aus, das für das Hosten von Worker-Knoten konfiguriert ist.
    2. Wählen Sie Erweiterte Optionen anzeigen aus, und geben Sie an, dass Sie präemptive Instanzen verwenden möchten, um Worker-Knoten im Knotenpool bereitzustellen:

      • Kapazitätstyp: Wählen Sie Präemptive Kapazität.
      • Bei Freigabe angehängtes Boot-Volume endgültig löschen: Wählen Sie aus, ob das angehängte Boot-Volume endgültig gelöscht werden soll, wenn die Kapazität zurückgefordert wird
    3. Wählen Sie optional Weitere Zeile aus, um der Platzierungskonfiguration zusätzliche Availability-Domains, Subnetze und Kapazitätstypen hinzuzufügen. Wenn Sie mehrere Availability-Domains in der Platzierungskonfiguration eines Knotenpools angeben, können Sie für jede Availability-Domain einen anderen Kapazitätstyp angeben. Oracle empfiehlt jedoch, dass alle Worker-Knoten im Knotenpool denselben Kapazitätstyp aufweisen, um die Verwaltung von Knotenpools zu vereinfachen.

Knotenpools erstellen und präemptive Kapazität angeben

  1. Wählen Sie auf der Listenseite Cluster den Namen des Clusters aus, in dem Sie einen neuen Knotenpool erstellen möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder des Clusters benötigen, finden Sie weitere Informationen unter Cluster auflisten.
  2. Wählen Sie unter Ressourcen die Option Knotenpools aus, und wählen Sie Knotenpool hinzufügen aus, um einen neuen Knotenpool zu erstellen und die erforderlichen Eigenschaften für die dazugehörigen Worker-Knoten anzugeben.
  3. Bei der Angabe der Platzierungskonfiguration für einen Knotenpool im Cluster:
    1. Geben Sie die erste Availability-Domain und das erste Subnetz an:
      • Availability-Domain: Wählen Sie die Availability-Domain aus, in der Worker-Knoten abgelegt werden sollen.
      • Faultdomain: (Optional) Eine oder mehrere Faultdomains in der Availability-Domain, in der Worker-Knoten platziert werden sollen.
      • Subnetz: Wählen Sie das Subnetz aus, das für das Hosten von Worker-Knoten konfiguriert ist.
    2. Wählen Sie Erweiterte Optionen anzeigen aus, und geben Sie an, dass Sie präemptive Instanzen verwenden möchten, um Worker-Knoten im Knotenpool bereitzustellen:

      • Kapazitätstyp: Wählen Sie Präemptive Kapazität.
      • Bei Freigabe angehängtes Boot-Volume endgültig löschen: Wählen Sie aus, ob das angehängte Boot-Volume endgültig gelöscht werden soll, wenn die Kapazität zurückgefordert wird
    3. Wählen Sie optional Weitere Zeile aus, um der Platzierungskonfiguration zusätzliche Availability-Domains, Subnetze und Kapazitätstypen hinzuzufügen. Wenn Sie mehrere Availability-Domains in der Platzierungskonfiguration eines Knotenpools angeben, können Sie für jede Availability-Domain einen anderen Kapazitätstyp angeben. Oracle empfiehlt jedoch, dass alle Worker-Knoten im Knotenpool denselben Kapazitätstyp aufweisen, um die Verwaltung von Knotenpools zu vereinfachen.

Knotenpools aktualisieren und präemptive Kapazität angeben

  1. Wählen Sie auf der Listenseite Cluster den Namen des Clusters, das Sie ändern möchten. Wenn Sie Hilfe beim Suchen der Listenseite oder des Clusters benötigen, finden Sie weitere Informationen unter Cluster auflisten.
  2. Wählen Sie unter Ressourcen die Option Knotenpools aus, und wählen Sie dann den Namen des zu ändernden Knotenpools aus.
  3. Wählen Sie auf der Seite Knotenpooldetails die Option Bearbeiten aus.
  4. Bei der Angabe der Platzierungskonfiguration für einen Knotenpool im Cluster:
    1. Geben Sie die erste Availability-Domain und das erste Subnetz an:
      • Availability-Domain: Wählen Sie die Availability-Domain aus, in der Worker-Knoten abgelegt werden sollen.
      • Faultdomain: (Optional) Eine oder mehrere Faultdomains in der Availability-Domain, in der Worker-Knoten platziert werden sollen.
      • Subnetz: Wählen Sie das Subnetz aus, das für das Hosten von Worker-Knoten konfiguriert ist.
    2. Wählen Sie Erweiterte Optionen anzeigen aus, und geben Sie an, dass Sie präemptive Instanzen verwenden möchten, um Worker-Knoten im Knotenpool bereitzustellen:

      • Kapazitätstyp: Wählen Sie Präemptive Kapazität.
      • Bei Freigabe angehängtes Boot-Volume endgültig löschen: Wählen Sie aus, ob das angehängte Boot-Volume endgültig gelöscht werden soll, wenn die Kapazität zurückgefordert wird
    3. Wählen Sie optional Weitere Zeile aus, um der Platzierungskonfiguration zusätzliche Availability-Domains, Subnetze und Kapazitätstypen hinzuzufügen. Wenn Sie mehrere Availability-Domains in der Platzierungskonfiguration eines Knotenpools angeben, können Sie für jede Availability-Domain einen anderen Kapazitätstyp angeben. Oracle empfiehlt jedoch, dass alle Worker-Knoten im Knotenpool denselben Kapazitätstyp aufweisen, um die Verwaltung von Knotenpools zu vereinfachen.
  5. Speichern Sie die Änderungen.

CLI verwenden

Informationen zur Verwendung der CLI finden Sie unter Befehlszeilenschnittstelle (CLI). Eine vollständige Liste der Flags und Optionen, die für CLI-Befehle verfügbar sind, finden Sie in der Befehlszeilenreferenz.

Knotenpools erstellen und präemptive Kapazität angeben

Um mit der CLI einen Knotenpool zu erstellen, der präemptive Kapazität für das Provisioning von Worker-Knoten verwendet, nehmen Sie das Argument preemptibleNodeConfig in den Parameter --placement-configs auf.

Beispiel:

oci ce node-pool create \
--cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd \
--name test-node \
--node-image-id ocid1.image.oc1.iad.aaaaaaaa6______nha \
--compartment-id oocid1.compartment.oc1..aaaaaaaay______t6q \
--kubernetes-version v1.21.5 \
--node-shape VM.Standard2.1 \
--placement-configs "[{\"availability-domain\":\"IqDk:US-ASHBURN-AD-2\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaa2xpk______zva\", \"faultDomains\":[\"FAULT-DOMAIN-3\", \"FAULT-DOMAIN-1\"]}, {\"availability-domain\":\"IqDk:US-ASHBURN-AD-1\", \"preemptibleNodeConfig\": {\"preemptionAction\":{\"isPreserveBootVolume\":false, \"type\":\"TERMINATE\"}}, \"subnet-id\":\"ocid1.subnet.oc1.iad.aaaaaaaauhls______bpq\", \"faultDomains\": [\"FAULT-DOMAIN-1\", \"FAULT-DOMAIN-2\"]}]" \
--size 1 \
--region=us-ashburn-1 \

Wenn Sie in der Platzierungskonfiguration eines Knotenpools mehrere Availability-Domains angeben, können Sie für jede Availability-Domain einen anderen Kapazitätstyp angeben. Oracle empfiehlt jedoch, dass alle Worker-Knoten im Knotenpool denselben Kapazitätstyp aufweisen, um die Verwaltung von Knotenpools zu vereinfachen.

API verwenden

Informationen zur Verwendung der API und zu Signieranforderungen finden Sie unter REST-API-Dokumentation und Sicherheitszugangsdaten. Informationen zu SDKs finden Sie unter SDKs und die CLI.

Verwenden Sie das Attribut placementConfigs des Objekts nodeConfigDetails, um den Kapazitätstyp beim Erstellen oder Aktualisieren von Knotenpools anzugeben.

Wenn Sie in der Platzierungskonfiguration eines Knotenpools mehrere Availability-Domains angeben, können Sie für jede Availability-Domain einen anderen Kapazitätstyp angeben. Oracle empfiehlt jedoch, dass alle Worker-Knoten im Knotenpool denselben Kapazitätstyp aufweisen, um die Verwaltung von Knotenpools zu vereinfachen.