Instances Spot - Guide de l'utilisateur d'Eksctl

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Instances Spot

Groupes de nœuds gérés

eksctlprend en charge les nœuds de travail ponctuels à l'aide de groupes de nœuds gérés par EKS, une fonctionnalité qui permet aux clients d'EKS dotés d'applications tolérantes aux pannes de configurer et de gérer facilement des instances EC2 Spot pour leurs clusters EKS. EKS Managed Nodegroup configurera et lancera un groupe d'instances Spot EC2 à mise à l'échelle automatique en suivant les meilleures pratiques Spot et en vidant automatiquement les nœuds de travail Spot avant que les instances ne soient interrompues par AWS. L'utilisation de cette fonctionnalité est gratuite et les clients ne paient que pour l'utilisation des ressources AWS, telles que les instances EC2 Spot et les volumes EBS.

Pour créer un cluster avec un groupe de nœuds géré à l'aide d'instances Spot, transmettez l'--spotindicateur et une liste facultative de types d'instances :

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

Pour créer un groupe de nœuds géré à l'aide d'instances Spot sur un cluster existant :

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

Pour créer des instances Spot à l'aide de groupes de nœuds gérés via un fichier de configuration :

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

Les groupes de nœuds non gérés ne prennent pas en charge les instanceTypes champs spot et, à la place, le instancesDistribution champ est utilisé pour configurer les instances Spot. Voir ci-dessous

Plus d'informations

Groupes de nœuds non gérés

eksctlprend en charge les instances ponctuelles via le MixedInstancesPolicy for Auto Scaling Groups.

Voici un exemple de groupe de nœuds qui utilise 50 % d'instances ponctuelles et 50 % d'instances à la demande :

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

Notez que le nodeGroups.X.instanceType champ ne doit pas être défini lors de l'utilisation du instancesDistribution champ.

Cet exemple utilise des instances de GPU :

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

Cet exemple utilise la stratégie d'allocation de places optimisée en termes de 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"

Cet exemple utilise la stratégie d'allocation au capacity-optimized-prioritized comptant :

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"

Utilisez la stratégie capacity-optimized-prioritized d'allocation, puis définissez l'ordre des types d'instances dans la liste des remplacements de modèles de lancement, de la priorité la plus élevée à la plus faible (du premier au dernier de la liste). Amazon EC2 Auto Scaling respecte les priorités relatives aux types d'instances dans la mesure du possible, mais optimise d'abord la capacité. Il s'agit d'une bonne option pour les charges de travail où les risques d'interruption doivent être minimisés, mais où la préférence pour certains types d'instances est également importante. Pour plus d'informations, consultez la section Options d'achat ASG.

Notez que le spotInstancePools champ ne doit pas être défini lors de l'utilisation du spotAllocationStrategy champ. Si ce n'spotAllocationStrategyest pas spécifié, EC2 utilisera par défaut la lowest-price stratégie.

Voici un exemple minimal :

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

Pour distinguer les nœuds entre les instances ponctuelles ou à la demande, vous pouvez utiliser l'étiquette kubernetes node-lifecycle qui aura la valeur spot ou on-demand dépendra de son type.

Paramètres dans InstancesDistribution

Consultez le schéma de configuration du cluster pour plus de détails.