Wie verwende ich Fargate Spot-Kapazitätsanbieter für Amazon ECS?

Lesedauer: 5 Minute
0

Ich möchte AWS Fargate Spot-Kapazitätsanbieter für Amazon Elastic Container Service (Amazon ECS) verwenden.

Kurzbeschreibung

Bevor Sie beginnen, sollten Sie Folgendes beachten:

  • Fargate- und Fargate Spot-Kapazitätsanbieter müssen nicht erstellt werden. Sie sind für alle Konten verfügbar und müssen nur mit einem Cluster verknüpft werden, um verwendet zu werden.
  • Der Fargate Spot-Kapazitätsanbieter kann mithilfe der ECS PutClusterCapacityProviders-API und der ECS put-cluster-capacity-providers-CLI-Befehlsreferenz mit einem vorhandenen Cluster verknüpft werden. Das Hinzufügen eines Fargate Spot-Kapazitätsanbieters zu einem vorhandenen Cluster wird mithilfe der AWS-Managementkonsole nicht unterstützt.
  • Die Kapazitätsanbieter Fargate und Fargate Spot sind reserviert und können nicht gelöscht werden. Sie können sie mithilfe der PutClusterCapacityProviders-API von einem Cluster trennen.
  • Fargate Spot setzt voraus, dass Ihre Aufgabe die Plattformversion 1.3.0 oder höher (für Linux) verwendet und der Fargate Spot-Kapazitätsanbieter für Windows-Container auf Fargate nicht unterstützt wird.

Lösung

**Hinweis:**Wenn Sie beim Ausführen von AWS-CLI-Befehlen Fehler erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Erstellen Sie den Fargate Spot-Kapazitätsanbieter, ordnen Sie ihn Ihrem Cluster zu und trennen Sie ihn

Fargate Spot-Kapazitätsanbieter werden automatisch dem Cluster zugeordnet, wenn sie über die Amazon ECS-Konsole mithilfe der Cluster-Vorlage Nur Networking erstellt werden. Weitere Informationen finden Sie unter Erstellen eines Clusters für den Fargate-Starttyp mit der neuen Konsole.

Ordnen Sie Ihrem Cluster den Fargate Spot-Kapazitätsanbieter zu

Wenn der Fargate Spot-Kapazitätsanbieter noch nicht verknüpft ist, können Sie den Kapazitätsanbieter mit Ihrem Cluster verknüpfen, indem Sie die PutClusterCapacityProviders-API oder den folgenden AWS CLI-Befehl verwenden:

aws ecs put-cluster-capacity-providers \
        --cluster <Cluster_name> \
        --capacity-providers FARGATE FARGATE_SPOT \
        --default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 \
        --region <Region>

**Wichtig:**Um zu vermeiden, dass Ihre Kapazitätsanbieter überschrieben werden, nehmen Sie alle Ihre vorhandenen Kapazitätsanbieter und die Kapazitätsanbieterstrategie in den vorherigen Befehl auf. Kapazitätsanbieter, die nicht im Befehl enthalten sind, werden vom Cluster getrennt.

Trennen Sie den Fargate Spot-Kapazitätsanbieter von Ihrem Cluster

Alle vorhandenen Kapazitätsanbieter, die dem Cluster zugeordnet sind und die in einem PutClusterCapacityProviders-API-Aufruf weggelassen werden, werden vom Cluster getrennt. Führen Sie den folgenden AWS CLI-Befehl aus, um den Fargate Spot-Kapazitätsanbieter von Ihrem Amazon ECS-Cluster zu trennen:

aws ecs put-cluster-capacity-providers \
        --cluster <Cluster_name> \
        --capacity-providers FARGATE \
        --default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 \
        --region <Region>

Stellen Sie sicher, dass Ihr Fargate Spot-Kapazitätsanbieter mit Ihrem Amazon ECS-Cluster verknüpft ist

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Fargate Spot-Kapazitätsanbieter mit Ihrem Amazon ECS-Cluster verknüpft ist:

aws ecs describe-clusters \
        --cluster <Cluster_name> \
        --region <Region>

Die Ausgabe sieht ähnlich wie die folgende aus:

Output:
      "capacityProviders": [
           "FARGATE",
           "FARGATE_SPOT"
      ]

**Hinweis:**Die Ausgabe des vorherigen Befehls umfasst den Abschnitt CapacityProviders, der die Kapazitätsanbieter enthält, die Ihrem Amazon ECS-Cluster zugeordnet sind.

Führen Sie eine Aufgabe aus oder erstellen Sie einen Dienst mit dem Fargate Spot-Kapazitätsanbieter

Führen Sie den folgenden Befehl aus, um eine Aufgabe mit einem Fargate Spot-Kapazitätsanbieter auszuführen:

aws ecs run-task \
        --cluster <Cluster_name> \
        --capacity-provider-strategy capacityProvider=FARGATE_SPOT,weight=1 \
        --task-definition <Task_definition_family>:<revision> \
        --network-configuration "awsvpcConfiguration={subnets=[string,string],securityGroups=[string,string],assignPublicIp=string}" \
        --count <Number_of_Tasks> \
        --region <Region>

Führen Sie den folgenden Befehl aus, um einen Amazon ECS-Service zu erstellen, der Fargate Spot-Kapazitätsanbieter verwendet:

aws ecs create-service \
        --cluster <Cluster_name> \
        --service-name <Service_name> \
        --capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 \
        --task-definition <Task_defintition_family>:<revision> \
        --network-configuration "awsvpcConfiguration={subnets=[string,string],securityGroups=[string,string],assignPublicIp=string}" \
        --desired-count <Number_of_tasks> \
        --region <Region>

Überprüfen Sie, ob Ihre Aufgaben auf dem Fargate Spot-Kapazitätsanbieter ausgeführt werden

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Ihre Aufgaben Fargate-Kapazitätsanbieter verwenden:

aws ecs describe-tasks
        --cluster <Cluster_name> \
        --tasks <TaskID> \
        --region <Region>

Die Nachverfolgung der Nutzung von Fargate OnDemand und Fargate Spot pro Dienst von Amazon CloudWatch aus wird derzeit nicht unterstützt. Mit CloudWatch können Sie jedoch die Metrik für die gesamte Fargate OnDemand- und Spot-Nutzung einsehen. Weitere Informationen finden Sie unter AWS Fargate-Nutzungsmetriken.

Häufig gestellte Fragen

Was sind einige bewährte Methoden für Fargate Spot?

  • Fargate Spot eignet sich hervorragend für statuslose, fehlertolerante Workloads, aber verlassen Sie sich bei kritischen Workloads nicht ausschließlich auf Spot Tasks. Konfigurieren Sie stattdessen eine Mischung aus regulären Fargate-Aufgaben.
  • Gehen Sie elegant mit Unterbrechungen um, indem Sie SIGTERM-Signale abfangen. Beim Empfang eines SIGTERM-Signals empfiehlt es sich, StopTimeout auf 120 Sekunden einzustellen. Weitere Informationen finden Sie unter Ordnungsgemäßes Herunterfahren ECS.
  • Anwendungen, die auf Fargate Spot laufen, müssen fehlertolerant sein.

Was passiert mit den Aufgaben, wenn die FARGATE\ _SPOT-Kapazität nicht verfügbar ist?

Wenn der ECS-Scheduler eine Aufgabe nicht starten kann, weil keine Kapazität verfügbar ist, wird das Ereignis SERVICE\ _TASK\ _PLACEMENT\ _FAILURE ausgegeben. Die Aufgabe wird nicht in die erste Phase BEREITSTELLUNG übergehen und es wird kein Hinweis in den ECS-Ereignissen angezeigt. Der ECS-Scheduler wird weiterhin versuchen, die Aufgabe zu starten. Wenn Kapazität verfügbar wird, wird das Ereignis SERVICE\ _STEADY\ _STATE ausgegeben.

Gibt es einen Failover zu Fargate, wenn keine Fargate Spot-Kapazität verfügbar ist?

Es ist nicht möglich, einen Failback-Mechanismus für FARGATE einzurichten, wenn keine FARGATE\ _SPOT-Kapazität verfügbar ist.

Was ist ein Beispiel dafür, wie die Aufgaben gestellt werden, wenn die Kapazitätsanbieter in einem ECS-Service verwendet werden?

Für dieses Beispiel gibt es eine Strategie für Kapazitätsanbieter, die die folgenden zwei Kapazitätsanbieter umfasst:

Provider 1: FARGATE      |  Base:2   Weight:1
Provider 2: FARGATE_SPOT |  Base:0   Weight:3

Gemäß dieser Strategie verwenden drei Aufgaben, nachdem der Basiswert erfüllt ist, für jede Aufgabe, die mit FARGATE ausgeführt wird, FARGATE\ _SPOT. Wenn der ECS-Service mit der gewünschten Anzahl von 5 erstellt wird, passiert Folgendes:

  • 2 Aufgaben werden mit FARGATE gestartet, um den Basiswert zu erreichen, und die restlichen 3 werden im Verhältnis 1:3 zwischen FARGATE und FARGATE\ _SPOT aufgeteilt.
  • 3 Aufgaben werden mit FARGATE und 2 Aufgaben in FARGATE\ _SPOT ausgeführt.

Mit derselben Strategie, bei der ein Scale-Out-Ereignis eingetreten ist und die gewünschte Anzahl auf 9 erhöht wird. Der ECS-Scheduler stellt fest, dass bereits 3 Aufgaben mit FARGATE ausgeführt wurden, die die Basis erfüllt haben. Außerdem werden die neuen 4 Aufgaben, die sich im Status BEREITSTELLUNG befinden, im Verhältnis 1:3 zwischen FARGATE und FARGATE\ _SPOT aufgeteilt. Die letzten 4 Aufgaben werden mit FARGATE und 5 Aufgaben in FARGATE\ _SPOT ausgeführt.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren