Seletor de instâncias - Guia do usuário do Eksctl

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Seletor de instâncias

O eksctl suporta a especificação de vários tipos de instância para grupos de nós gerenciados e autogerenciados, mas com mais de 270 tipos de EC2 instância, os usuários precisam dedicar algum tempo para descobrir quais tipos de instância seriam adequados para seu grupo de nós. É ainda mais difícil usar instâncias spot porque você precisa escolher um conjunto de instâncias que funcione bem em conjunto com o autoescalador de cluster.

O eksctl agora se integra ao seletor de EC2 instâncias, que resolve esse problema gerando uma lista de tipos de instância com base nos critérios de recursos: vCPUs, memory, # of GPUs e arquitetura da CPU. Quando os critérios do seletor de instância são aprovados, eksctl cria um grupo de nós com os tipos de instância definidos para os tipos de instância que correspondem aos critérios fornecidos.

Crie grupos de clusters e nós

Para criar um cluster com um único grupo de nós que usa tipos de instância correspondentes aos critérios de recursos do seletor de instâncias passados para eksctl, execute

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

Isso criará um cluster e um grupo de nós gerenciado com o instanceTypes campo definido como [c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium] (o conjunto de tipos de instância retornados pode mudar).

Para grupos de nós não gerenciados, o instancesDistribution.instanceTypes campo será definido:

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

Os critérios do seletor de instâncias também podem ser especificados em: 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

As seguintes opções de CLI do seletor de instância são suportadas por eksctl create cluster e: eksctl create nodegroup

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

Um arquivo de exemplo pode ser encontrado aqui.

Corrida a seco

O recurso dry-run permite que você inspecione e altere as instâncias correspondentes ao seletor de instâncias antes de continuar com a criação de um grupo de nós.

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

O gerado ClusterConfig pode então ser passado paraeksctl create cluster:

eksctl create cluster -f generated-cluster.yaml

O instanceSelector campo que representa as opções da CLI também será adicionado ao ClusterConfig arquivo para fins de visibilidade e documentação. Quando --dry-run for omitido, esse campo será ignorado e o instanceTypes campo será usado, caso contrário, qualquer alteração será substituída pelo instanceTypes eksctl.

Quando um ClusterConfig arquivo é passado com--dry-run, eksctl exibirá um ClusterConfig arquivo contendo o mesmo conjunto de grupos de nós após expandir os critérios de recurso do seletor de instâncias de cada grupo de nós.

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