Spot-Instances - Eksctl-Benutzerhandbuch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Spot-Instances

Verwaltete Knotengruppen

eksctlunterstützt Spot-Worker-Knoten mithilfe von EKS Managed Nodegroups, einer Funktion, die es EKS-Kunden mit fehlertoleranten Anwendungen ermöglicht, EC2 Spot-Instances für ihre EKS-Cluster einfach bereitzustellen und zu verwalten. EKS Managed Nodegroup konfiguriert und startet eine EC2 Autoscaling-Gruppe von Spot-Instances gemäß den Best Practices von Spot und entleert Spot-Worker-Knoten automatisch, bevor die Instances von AWS unterbrochen werden. Für die Nutzung dieser Funktion fallen keine zusätzlichen Gebühren an, und Kunden zahlen nur für die Nutzung der AWS-Ressourcen wie EC2 Spot-Instances und EBS-Volumes.

Um mithilfe von Spot-Instances einen Cluster mit einer verwalteten Knotengruppe zu erstellen, übergeben Sie das --spot Flag und eine optionale Liste von Instance-Typen:

eksctl create cluster --spot --instance-types=c3.large,c4.large,c5.large

So erstellen Sie eine verwaltete Knotengruppe mithilfe von Spot-Instances auf einem vorhandenen Cluster:

eksctl create nodegroup --cluster=<clusterName> --spot --instance-types=c3.large,c4.large,c5.large

So erstellen Sie Spot-Instances mithilfe verwalteter Knotengruppen über eine Konfigurationsdatei:

# spot-cluster.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: spot-cluster region: us-west-2 managedNodeGroups: - name: spot instanceTypes: ["c3.large","c4.large","c5.large","c5d.large","c5n.large","c5a.large"] spot: true # `instanceTypes` defaults to [`m5.large`] - name: spot-2 spot: true # On-Demand instances - name: on-demand instanceTypes: ["c3.large", "c4.large", "c5.large"]
eksctl create cluster -f spot-cluster.yaml
Anmerkung

Nicht verwaltete Knotengruppen unterstützen die instanceTypes Felder spot und nicht, stattdessen wird das instancesDistribution Feld zur Konfiguration von Spot-Instances verwendet. Siehe unten

Weitere Informationen

Nicht verwaltete Knotengruppen

eksctlunterstützt Spot-Instances über die MixedInstancesPolicy for Auto Scaling Groups.

Hier ist ein Beispiel für eine Knotengruppe, die zu 50% Spot-Instances und zu 50% On-Demand-Instances verwendet:

nodeGroups: - name: ng-1 minSize: 2 maxSize: 5 instancesDistribution: maxPrice: 0.017 instanceTypes: ["t3.small", "t3.medium"] # At least one instance type should be specified onDemandBaseCapacity: 0 onDemandPercentageAboveBaseCapacity: 50 spotInstancePools: 2

Beachten Sie, dass das nodeGroups.X.instanceType Feld nicht festgelegt werden sollte, wenn Sie das instancesDistribution Feld verwenden.

In diesem Beispiel werden GPU-Instanzen verwendet:

nodeGroups: - name: ng-gpu instanceType: mixed desiredCapacity: 1 instancesDistribution: instanceTypes: - p2.xlarge - p2.8xlarge - p2.16xlarge maxPrice: 0.50

In diesem Beispiel wird die Strategie zur kapazitätsoptimierten Spot-Allokation verwendet:

nodeGroups: - name: ng-capacity-optimized minSize: 2 maxSize: 5 instancesDistribution: maxPrice: 0.017 instanceTypes: ["t3.small", "t3.medium"] # At least one instance type should be specified onDemandBaseCapacity: 0 onDemandPercentageAboveBaseCapacity: 50 spotAllocationStrategy: "capacity-optimized"

In diesem Beispiel wird die capacity-optimized-prioritized Spot-Allokationsstrategie verwendet:

nodeGroups: - name: ng-capacity-optimized-prioritized minSize: 2 maxSize: 5 instancesDistribution: maxPrice: 0.017 instanceTypes: ["t3a.small", "t3.small"] # At least two instance types should be specified onDemandBaseCapacity: 0 onDemandPercentageAboveBaseCapacity: 0 spotAllocationStrategy: "capacity-optimized-prioritized"

Verwenden Sie die capacity-optimized-prioritized Zuweisungsstrategie und legen Sie dann die Reihenfolge der Instance-Typen in der Liste der Startvorlagen-Overrides von der höchsten zur niedrigsten Priorität fest (vom ersten zum letzten in der Liste). Amazon EC2 Auto Scaling berücksichtigt die Prioritäten des Instance-Typs nach bestem Wissen und Gewissen, optimiert jedoch zuerst die Kapazität. Dies ist eine gute Option für Workloads, bei denen die Möglichkeit von Unterbrechungen minimiert werden muss, bei denen aber auch die Präferenz für bestimmte Instance-Typen wichtig ist. Weitere Informationen finden Sie unter ASG-Kaufoptionen.

Beachten Sie, dass das spotInstancePools Feld nicht festgelegt werden sollte, wenn Sie das Feld verwenden. spotAllocationStrategy Wenn das nicht angegeben spotAllocationStrategy ist, EC2 wird standardmäßig die lowest-price Strategie verwendet.

Hier ist ein minimales Beispiel:

nodeGroups: - name: ng-1 instancesDistribution: instanceTypes: ["t3.small", "t3.medium"] # At least one instance type should be specified

Um Knoten zwischen Spot- und On-Demand-Instances zu unterscheiden, können Sie das Kubernetes-Label verwendennode-lifecycle, das on-demand je nach spot Typ den Wert oder hat.

Parameter in InstancesDistribution

Einzelheiten finden Sie im Cluster-Konfigurationsschema.