

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

# 클러스터 생성 및 관리
<a name="creating-and-managing-clusters"></a>

이 주제에서는 Eksctl을 사용하여 EKS 클러스터를 생성하고 삭제하는 방법을 다룹니다. CLI 명령을 사용하거나 클러스터 구성 YAML 파일을 생성하여 클러스터를 생성할 수 있습니다.

## 간단한 클러스터 생성
<a name="_creating_a_simple_cluster"></a>

다음 명령을 사용하여 간단한 클러스터를 생성합니다.

```
eksctl create cluster
```

그러면 기본 리전(AWS CLI 구성에 의해 지정됨)에 m5.large 노드 2개가 포함된 관리형 노드 그룹 1개가 있는 EKS 클러스터가 생성됩니다.

이제 eksctl은 구성 파일을 사용하지 않을 때 기본적으로 관리형 노드 그룹을 생성합니다. 자체 관리형 노드 그룹을 생성하려면 `eksctl create cluster` 또는 `--managed=false`에 전달합니다`eksctl create nodegroup`.

### 고려 사항
<a name="_considerations"></a>
+ 에서 클러스터를 생성할 때가 발생할 `us-east-1`수 있습니다`UnsupportedAvailabilityZoneException`. 이 경우 제안된 영역을 복사하고 `--zones` 플래그를 전달합니다. 예: `eksctl create cluster --region=us-east-1 --zones=us-east-1a,us-east-1b,us-east-1d`. 이 문제는 다른 리전에서 발생할 수 있지만 덜 일반적입니다. 대부분의 경우 `--zone` 플래그를 사용할 필요가 없습니다.

## 구성 파일을 사용하여 클러스터 생성
<a name="_create_cluster_using_config_file"></a>

플래그 대신 구성 파일을 사용하여 클러스터를 생성할 수 있습니다.

먼저 `cluster.yaml` 파일을 생성합니다.

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: basic-cluster
  region: eu-north-1

nodeGroups:
  - name: ng-1
    instanceType: m5.large
    desiredCapacity: 10
    volumeSize: 80
    ssh:
      allow: true # will use ~/.ssh/id_rsa.pub as the default ssh key
  - name: ng-2
    instanceType: m5.xlarge
    desiredCapacity: 2
    volumeSize: 100
    ssh:
      publicKeyPath: ~/.ssh/ec2_id_rsa.pub
```

그런 다음 다음 명령을 실행합니다.

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

이렇게 하면 설명된 대로 클러스터가 생성됩니다.

기존 VPC를 사용해야 하는 경우 다음과 같은 구성 파일을 사용할 수 있습니다.

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-in-existing-vpc
  region: eu-north-1

vpc:
  subnets:
    private:
      eu-north-1a: { id: subnet-0ff156e0c4a6d300c }
      eu-north-1b: { id: subnet-0549cdab573695c03 }
      eu-north-1c: { id: subnet-0426fb4a607393184 }

nodeGroups:
  - name: ng-1-workers
    labels: { role: workers }
    instanceType: m5.xlarge
    desiredCapacity: 10
    privateNetworking: true
  - name: ng-2-builders
    labels: { role: builders }
    instanceType: m5.2xlarge
    desiredCapacity: 2
    privateNetworking: true
    iam:
      withAddonPolicies:
        imageBuilder: true
```

클러스터 이름 또는 노드 그룹 이름에는 영숫자(대소문자 구분)와 하이픈만 포함되어야 합니다. 영문자로 시작해야 하며 128자를 초과할 수 없습니다. 그렇지 않으면 검증 오류가 발생합니다. 자세한 내용은 AWS [ CLoudFormation 사용 설명서의 CloudFormation 콘솔에서 스택 생성을](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-console-create-stack-parameters.html) 참조하세요. CLoudFormation 

## 새 클러스터에 대한 kubeconfig 업데이트
<a name="_update_kubeconfig_for_new_cluster"></a>

클러스터가 생성되면 적절한 kubernetes 구성이 kubeconfig 파일에 추가됩니다. 환경 변수 `KUBECONFIG` 또는 `~/.kube/config` 기본적으로 구성한 파일입니다. `--kubeconfig` 플래그를 사용하여 kubeconfig 파일의 경로를 재정의할 수 있습니다.

kubeconfig 파일 작성 방법을 변경할 수 있는 기타 플래그:


| 플래그 | type | 사용 | 기본값 | 
| --- | --- | --- | --- | 
| --kubeconfig | 문자열 | kubeconfig 쓰기 경로(--auto-kubeconfig와 호환되지 않음) | $KUBECONFIG 또는 \~/.kube/config | 
| --set-kubeconfig-context | bool | true인 경우 현재 컨텍스트가 kubeconfig로 설정됩니다. 컨텍스트가 이미 설정된 경우 컨텍스트를 덮어씁니다. | true | 
| --auto-kubeconfig | bool | 클러스터 이름으로 kubeconfig 파일 저장 | true | 
| --write-kubeconfig | bool | kubeconfig 쓰기 토글 | true | 

## 클러스터 삭제
<a name="_delete_cluster"></a>

이 클러스터를 삭제하려면 다음을 실행합니다.

```
eksctl delete cluster -f cluster.yaml
```

**주의**  
삭제 작업과 함께 `--wait` 플래그를 사용하여 삭제 오류가 제대로 보고되도록 합니다.

`--wait` 플래그가 없으면 eksctl은 클러스터의 CloudFormation 스택에만 삭제 작업을 실행하고 삭제를 기다리지 않습니다. 경우에 따라 클러스터 또는 VPC를 사용하는 AWS 리소스로 인해 클러스터 삭제가 실패할 수 있습니다. 삭제에 실패하거나 대기 플래그를 잊어버린 경우 CloudFormation GUI로 이동하여 여기에서 eks 스택을 삭제해야 할 수 있습니다.

**주의**  
PDB 정책은 클러스터 삭제 중에 노드 제거를 차단할 수 있습니다.

노드 그룹이 있는 클러스터를 삭제할 때 포드 중단 예산(PDB) 정책은 노드가 성공적으로 제거되지 않도록 할 수 있습니다. 예를 들어가 `aws-ebs-csi-driver` 설치된 클러스터에는 일반적으로 한 번에 하나의 포드만 사용할 수 있도록 허용하는 PDB 정책이 있는 포드가 두 개 있으므로 삭제 중에 다른 포드를 제거할 수 없습니다. 이러한 시나리오에서 클러스터를 성공적으로 삭제하려면 `disable-nodegroup-eviction` 플래그를 사용하여 PDB 정책 검사를 우회합니다.

```
eksctl delete cluster -f cluster.yaml --disable-nodegroup-eviction
```

자세한 샘플 구성 파일은 eksctl GitHub 리포지토리의 [https://github.com/eksctl-io/eksctl/tree/master/examples](https://github.com/eksctl-io/eksctl/tree/master/examples) 디렉터리를 참조하세요.

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

모의 실행 기능을 사용하면 클러스터 생성을 ClusterConfig 건너뛰고 제공된 CLI 옵션을 나타내며 eksctl에서 설정한 기본값을 포함하는 ClusterConfig 파일을 출력하는 ClusterConfig 파일을 생성할 수 있습니다.

자세한 내용은 [드라이 런](dry-run.md) 페이지에서 확인할 수 있습니다.