Sélecteur d'instance - 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.

Sélecteur d'instance

eksctl permet de spécifier plusieurs types d'instances pour les groupes de nœuds gérés et autogérés, mais avec plus de 270 types d' EC2 instances, les utilisateurs doivent passer du temps à déterminer quels types d'instances conviennent le mieux à leur groupe de nœuds. C'est encore plus difficile lorsque vous utilisez des instances Spot, car vous devez choisir un ensemble d'instances qui fonctionne bien avec le Cluster Autoscaler.

eksctl s'intègre désormais au sélecteur d'EC2 instance, qui résout ce problème en générant une liste de types d'instances en fonction de critères de ressources : vCPUs, mémoire, nombre de GPUs et architecture du processeur. Lorsque les critères de sélection d'instance sont passés, eksctl crée un groupe de nœuds avec les types d'instances définis sur les types d'instance correspondant aux critères fournis.

Création de clusters et de groupes de nœuds

Pour créer un cluster avec un seul groupe de nœuds qui utilise des types d'instances correspondant aux critères de ressources du sélecteur d'instance transmis à eksctl, exécutez

eksctl create cluster --instance-selector-vcpus=2 --instance-selector-memory=4

Cela créera un cluster et un groupe de nœuds géré avec le instanceTypes champ défini sur [c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium] (l'ensemble de types d'instances renvoyé peut changer).

Pour les groupes de nœuds non gérés, le instancesDistribution.instanceTypes champ sera défini comme suit :

eksctl create cluster --managed=false --instance-selector-vcpus=2 --instance-selector-memory=4

Les critères du sélecteur d'instance peuvent également être spécifiés dans ClusterConfig :

# instance-selector-cluster.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster region: us-west-2 nodeGroups: - name: ng instanceSelector: vCPUs: 2 memory: "4" # 4 GiB, unit defaults to GiB managedNodeGroups: - name: mng instanceSelector: vCPUs: 2 memory: 2GiB # cpuArchitecture: x86_64 # default value
eksctl create cluster -f instance-selector-cluster.yaml

Les options CLI du sélecteur d'instance suivantes sont prises en charge par eksctl create cluster et eksctl create nodegroup :

--instance-selector-vcpus--instance-selector-memory, --instance-selector-gpus et instance-selector-cpu-architecture

Vous trouverez un exemple de fichier ici.

Run à sec

La fonction d'exécution à sec vous permet d'inspecter et de modifier les instances correspondant au sélecteur d'instance avant de procéder à la création d'un groupe de nœuds.

eksctl create cluster --name development --instance-selector-vcpus=2 --instance-selector-memory=4 --dry-run apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig # ... managedNodeGroups: - amiFamily: AmazonLinux2 instanceSelector: memory: "4" vCPUs: 2 instanceTypes: - c5.large - c5a.large - c5ad.large - c5d.large - t2.medium - t3.medium - t3a.medium ... # other config

Le résultat généré ClusterConfig peut ensuite être transmis à eksctl create cluster :

eksctl create cluster -f generated-cluster.yaml

Le instanceSelector champ représentant les options de la CLI sera également ajouté au ClusterConfig fichier à des fins de visibilité et de documentation. Lorsqu'il --dry-run est omis, ce champ sera ignoré et le instanceTypes champ sera utilisé, sinon toute modification instanceTypes sera annulée par eksctl.

Lorsqu'un ClusterConfig fichier est transmis--dry-run, eksctl produit un ClusterConfig fichier contenant le même ensemble de groupes de nœuds après avoir développé les critères de ressources du sélecteur d'instance de chaque groupe de nœuds.

# instance-selector-cluster.yaml --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: cluster region: us-west-2 nodeGroups: - name: ng instanceSelector: vCPUs: 2 memory: 4 # 4 GiB, unit defaults to GiB managedNodeGroups: - name: mng instanceSelector: vCPUs: 2 memory: 2GiB # cpuArchitecture: x86_64 # default value
eksctl create cluster -f instance-selector-cluster.yaml --dry-run apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig # ... managedNodeGroups: - amiFamily: AmazonLinux2 # ... instanceSelector: cpuArchitecture: x86_64 memory: 2GiB vCPUs: 2 instanceTypes: - t3.small - t3a.small nodeGroups: - amiFamily: AmazonLinux2 # ... instanceSelector: memory: "4" vCPUs: 2 instanceType: mixed instancesDistribution: capacityRebalance: false instanceTypes: - c5.large - c5a.large - c5ad.large - c5d.large - t2.medium - t3.medium - t3a.medium # ...