

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 인스턴스 선택기
<a name="instance-selector"></a>

eksctl은 관리형 및 자체 관리형 노드 그룹에 여러 인스턴스 유형을 지정할 수 있도록 지원하지만 EC2 인스턴스 유형이 270개 이상인 경우 사용자는 노드 그룹에 적합한 인스턴스 유형을 찾는 데 시간을 할애해야 합니다. Cluster Autoscaler와 함께 작동하는 인스턴스 세트를 선택해야 하므로 스팟 인스턴스를 사용할 때는 더 어렵습니다.

이제 eksctl이 [EC2 인스턴스 선택기](https://github.com/aws/amazon-ec2-instance-selector)와 통합되어 vCPUs, 메모리, GPUs. 인스턴스 선택기 기준이 통과되면 eksctl은 제공된 기준과 일치하는 인스턴스 유형으로 설정된 인스턴스 유형을 사용하여 노드 그룹을 생성합니다.

## 클러스터 및 노드 그룹 생성
<a name="_create_cluster_and_nodegroups"></a>

eksctl에 전달된 인스턴스 선택기 리소스 기준과 일치하는 인스턴스 유형을 사용하는 단일 노드 그룹으로 클러스터를 생성하려면

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

그러면 `instanceTypes` 필드가 로 설정된 클러스터와 관리형 노드 그룹이 생성됩니다`[c5.large, c5a.large, c5ad.large, c5d.large, t2.medium, t3.medium, t3a.medium]`(반환된 인스턴스 유형 세트가 변경될 수 있음).

비관리형 노드 그룹의 경우 `instancesDistribution.instanceTypes` 필드가 설정됩니다.

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

인스턴스 선택기 기준은 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
```

다음 인스턴스 선택기 CLI 옵션은 `eksctl create cluster` 및에서 지원됩니다`eksctl create nodegroup`.

 `--instance-selector-vcpus`, `--instance-selector-memory`, `--instance-selector-gpus` 및 `instance-selector-cpu-architecture` 

예제 파일은 [여기에서](https://github.com/eksctl-io/eksctl/blob/main/examples/28-instance-selector.yaml) 찾을 수 있습니다.

### 드라이 런
<a name="_dry_run"></a>

[모의 실행](dry-run.md) 기능을 사용하면 노드 그룹 생성을 진행하기 전에 인스턴스 선택기와 일치하는 인스턴스를 검사하고 변경할 수 있습니다.

```
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
```

그러면 생성된 ClusterConfig를에 전달할 수 있습니다`eksctl create cluster`.

```
eksctl create cluster -f generated-cluster.yaml
```

가시성 및 문서화를 위해 CLI 옵션을 나타내는 `instanceSelector` 필드도 ClusterConfig 파일에 추가됩니다. `--dry-run`를 생략하면이 필드가 무시되고 `instanceTypes` 필드가 사용됩니다. 그렇지 않으면에 대한 변경 사항이 eksctl에 의해 재정의`instanceTypes`됩니다.

ClusterConfig 파일이와 함께 전달되면 `--dry-run`eksctl은 각 노드 그룹의 인스턴스 선택기 리소스 기준을 확장한 후 동일한 노드 그룹 집합이 포함된 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 --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
# ...
```