Was sind einige bewährte Methoden für die Verwendung von EC2-Spot-Instances mit Amazon EKS?
Ich möchte Amazon-Elastic-Compute-Cloud-Spot-Instances (Amazon EC2) mit meinem Amazon Elastic Kubernetes Service (Amazon EKS) verwenden. Was sind bewährte Methoden?
Kurzbeschreibung
Im Folgenden finden Sie einige bewährte Methoden für die Verwendung von Amazon-EC2-Spot-Instances mit Amazon EKS:
- Verwenden Sie Spot-Instances nicht für lang andauernde Aufträge oder zustandsbehaftete Anwendungen.
- Verwenden verwalteter Knotengruppen mit Spot-Instances.
- Fügen Sie mehrere Instance-Typen zu Knotengruppen hinzu.
- Verwenden des AWS Node Termination Handler (NTH) für selbstverwaltete Knotengruppen.
Lösung
Verwenden Sie Spot-Instances nicht für lang andauernde Aufträge oder zustandsbehaftete Anwendungen
Die kurze Lebensdauer einer Spot-Instance kann zu ungewollten Abbrüchen von lang andauernden Aufträgen führen. Es kann sich auch auf Anwendungen mit Statusinformationen auswirken, da zustandsbehaftete Anwendungen Abschaltungen nicht tolerieren. Verwenden Sie stattdessen On-Demand-Instances für Aufträge mit langer Laufzeit.
Verwaltete Knotengruppen mit Spot-Instances verwenden
Sie können den Kapazitätstyp einer verwalteten Knotengruppe als Spot festlegen. Die verwaltete Knotengruppe konfiguriert dann eine Auto-Scaling-Gruppe für die Verwendung von EC2 Auto Scaling Capacity Rebalancing. Wenn EC2 Auto Scaling Capacity Rebalancing aktiviert ist und ein Spot-Knoten eine Neuausgleichsempfehlung erhält, versucht Amazon EKS, den Spot-Knoten zu ersetzen.
Nachdem der neue Spot-Knoten fertig ist, trennt Amazon EKS den vorherigen Spot-Knoten und entleert ihn. Dies kann dazu beitragen, das Risiko beschädigter Amazon-Elastic-Block-Store-Volumes (Amazon EBS) oder unterbrochener Datenbankverbindungen zu verringern.
Hinzufügen mehrerer Instance-Typen zu Knotengruppen
Jeder Spot-Instance-Pool besteht aus einer ungenutzten EC2-Instance-Kapazität für einen bestimmten Instance-Typ in einer bestimmten Availability Zone. Wenn eine Knotengruppe versucht, einen neuen Knoten bereitzustellen, verwendet die Knotengruppe einen der Instance-Typen, die in ihrer Konfiguration definiert sind. Wenn die Instance-Typen in keiner Availability Zone über Spot-Kapazität verfügen, kann die Knotengruppe nicht skaliert werden und wird herabgesetzt.
Um dieses Problem zu vermeiden, erhöhen Sie die Anzahl ähnlicher Instance-Typen in der Knotengruppe.
Sie haben beispielsweise einen Instance-Typ m5.large (2 vCPU/8 GiB RAM). Fügen Sie Instances mit denselben vCPU- und RAM-Werten hinzu, z. B. m5a.large, m5n.large und m4.large.
AWS the NTH für selbstverwaltete Knotengruppen verwenden
Der AWS Node Termination Handler (NTH) von der GitHub-Website wird in einem Amazon-EKS-Cluster als Bereitstellung oder DaemonSet bereitgestellt. Der NTH erweitert selbstverwaltete Knotengruppen um Funktionen, die ihnen fehlen. Der Handler erkennt und reagiert angemessen auf EC2-Wartungsereignisse, Spot-Unterbrechungsmeldungen, Auto.Scaling-Gruppen-Skalierungsereignisse und Neuverteilung der Availability Zone. Verwenden Sie die Option Warteschlangenprozessor, um alle NTH-Funktionen zur selbstverwalteten Knotengruppe hinzuzufügen.
Karpenter verwenden, um Spot-Instances zu verwalten
Karpenter ist ein Open-Source-Cluster-Autoscaler, der als Reaktion auf nicht planbare Pods automatisch neue Knoten bereitstellt. Karpenter bietet auch Funktionen zur Skalierung und Konsolidierung von Knoten, um Verschwendung und Kosten zu reduzieren. Es verwendet die kapazitätsoptimierte, priorisierte Zuweisungsstrategie zur Bereitstellung von EC2-Instances.
Karpenter verwendet alle EC2-Instance-Typen, die in den AWS-Regionen und Availability Zones eines Amazon-EKS-Clusters verfügbar sind, um Spot-Instances zu optimieren. Sie können Karpenter mit dem EC2-Instance-Selector-Tool verwenden, um eine Liste von Instancetypen zu generieren, die bestimmten Rechenanforderungen entsprechen. Durch die Verwendung verschiedener Instancetypen können Sie das Risiko von Fehlern bei unzureichender Kapazität verringern. Es ist auch eine bewährte Methode, Instances auf verschiedene Availability Zones zu verteilen, um verschiedene Spot-Pools zu verwenden.
Weitere Informationen zu den bewährten Methoden und Einschränkungen von Karpenter finden Sie unter bewährte Methoden von Karpenter auf GitHub.
Wichtig: Karpenter ist derzeit nicht in der Lage, die zweiminütige Warnung vor der Spot Interruption Termination Notice (ITN) zu verarbeiten. Um dieses Problem zu beheben, können Sie das NTH so installieren, dass Spot-Knoten ordnungsgemäß abgesperrt und entleert werden, wenn sie unterbrochen werden.
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren