Istanze Spot - Guida per l'utente di Eksctl

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Istanze Spot

Gruppi di nodi gestiti

eksctlsupporta i nodi di lavoro Spot utilizzando EKS Managed Nodegroups, una funzionalità che consente ai clienti EKS con applicazioni con tolleranza ai guasti di fornire e gestire facilmente le istanze Spot per i propri cluster EKS. EC2 EKS Managed Nodegroup configurerà e lancerà un gruppo di istanze EC2 Spot con scalabilità automatica seguendo le best practice Spot e svuotando automaticamente i nodi di lavoro Spot prima che le istanze vengano interrotte da AWS. Non è previsto alcun costo incrementale per l'utilizzo di questa funzionalità e i clienti pagano solo per l'utilizzo delle risorse AWS, come le istanze EC2 Spot e i volumi EBS.

Per creare un cluster con un gruppo di nodi gestito utilizzando istanze Spot, passa il --spot flag e un elenco opzionale di tipi di istanze:

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

Per creare un gruppo di nodi gestito utilizzando istanze Spot su un cluster esistente:

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

Per creare istanze Spot utilizzando gruppi di nodi gestiti tramite un file di configurazione:

# 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
Nota

I gruppi di nodi non gestiti non supportano i instanceTypes campi spot and, ma il instancesDistribution campo viene utilizzato per configurare le istanze Spot. Vedi sotto

Ulteriori informazioni

Gruppi di nodi non gestiti

eksctlsupporta le istanze spot tramite i gruppi MixedInstancesPolicy di Auto Scaling.

Ecco un esempio di nodegroup che utilizza il 50% di istanze spot e il 50% di istanze on demand:

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

Nota che il nodeGroups.X.instanceType campo non deve essere impostato quando si utilizza il campo. instancesDistribution

Questo esempio utilizza istanze GPU:

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

Questo esempio utilizza la strategia di allocazione spot ottimizzata per la capacità:

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"

Questo esempio utilizza la strategia di allocazione capacity-optimized-prioritized spot:

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"

Utilizza la strategia di capacity-optimized-prioritized allocazione e quindi imposta l'ordine dei tipi di istanza nell'elenco delle sostituzioni dei modelli di lancio dalla priorità più alta a quella più bassa (dalla prima all'ultima nell'elenco). Amazon EC2 Auto Scaling rispetta le priorità dei tipi di istanza con la massima diligenza, ma ottimizza innanzitutto la capacità. Questa è una buona opzione per i carichi di lavoro in cui è necessario ridurre al minimo la possibilità di interruzioni, ma è importante anche la preferenza per determinati tipi di istanze. Per ulteriori informazioni, consulta ASG Purchase Options.

Nota che il spotInstancePools campo non deve essere impostato quando si utilizza il campo. spotAllocationStrategy Se non spotAllocationStrategy è specificato, per impostazione predefinita EC2 utilizzerà la lowest-price strategia.

Ecco un esempio minimo:

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

Per distinguere i nodi tra istanze spot o on-demand, puoi usare l'etichetta Kubernetes node-lifecycle che avrà il valore spot o on-demand dipenderà dal tipo.

Parametri in InstancesDistribution

Consulta lo schema di configurazione del cluster per i dettagli.