View a markdown version of this page

Selettore di istanze - 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à.

Selettore di istanze

eksctl supporta la specificazione di più tipi di istanze per gruppi di nodi gestiti e autogestiti, ma con oltre 270 tipi di istanze EC2, gli utenti devono dedicare del tempo a capire quali tipi di istanza sarebbero adatti al loro nodegroup. È ancora più difficile quando si utilizzano le istanze Spot perché è necessario scegliere un set di istanze che funzionino bene con Cluster Autoscaler.

eksctl ora si integra con il selettore di istanze EC2, che risolve questo problema generando un elenco di tipi di istanze in base a criteri di risorse: vCPU, memoria, numero di GPU e architettura della CPU. Quando vengono passati i criteri del selettore di istanza, eksctl crea un nodegroup con i tipi di istanza impostati sui tipi di istanza che corrispondono ai criteri forniti.

Crea cluster e nodegroup

Per creare un cluster con un singolo nodegroup che utilizza i tipi di istanza corrispondenti ai criteri di risorsa del selettore di istanze passati a eksctl, esegui

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

Questo creerà un cluster e un nodegroup gestito con il instanceTypes campo impostato su [c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium] (il set di tipi di istanza restituiti potrebbe cambiare).

Per i gruppi di nodi non gestiti, il instancesDistribution.instanceTypes campo verrà impostato:

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

I criteri di selezione delle istanze possono essere specificati anche in: 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

Le seguenti opzioni CLI del selettore di istanze sono supportate da e: eksctl create cluster eksctl create nodegroup

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

Un file di esempio può essere trovato qui.

Corsa a secco

La funzionalità dry-run consente di ispezionare e modificare le istanze corrispondenti al selettore di istanze prima di procedere alla creazione di un nodegroup.

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

Il generato può quindi essere passato a: ClusterConfig eksctl create cluster

eksctl create cluster -f generated-cluster.yaml

Il instanceSelector campo che rappresenta le opzioni CLI verrà inoltre aggiunto al ClusterConfig file per scopi di visibilità e documentazione. Quando --dry-run viene omesso, questo campo verrà ignorato e il instanceTypes campo verrà utilizzato, altrimenti qualsiasi modifica instanceTypes verrebbe sovrascritta da eksctl.

Quando un ClusterConfig file viene passato con--dry-run, eksctl produrrà un ClusterConfig file contenente lo stesso set di nodegroup dopo aver espanso i criteri delle risorse del selettore di istanze di ciascun nodegroup.

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