기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
클러스터 생성 및 관리
이 주제에서는 Eksctl을 사용하여 EKS 클러스터를 생성하고 삭제하는 방법을 다룹니다. CLI 명령을 사용하거나 클러스터 구성 YAML 파일을 생성하여 클러스터를 생성할 수 있습니다.
간단한 클러스터 생성
다음 명령을 사용하여 간단한 클러스터를 생성합니다.
eksctl create cluster
그러면 기본 리전(AWS CLI 구성에 의해 지정됨)에 m5.large 노드 2개가 포함된 관리형 노드 그룹 1개가 있는 EKS 클러스터가 생성됩니다.
이제 eksctl은 구성 파일을 사용하지 않을 때 기본적으로 관리형 노드 그룹을 생성합니다. 자체 관리형 노드 그룹을 생성하려면 eksctl create cluster
또는 --managed=false
에 전달합니다eksctl create nodegroup
.
고려 사항
-
에서 클러스터를 생성할 때가 발생할
us-east-1
수 있습니다UnsupportedAvailabilityZoneException
. 이 경우 제안된 영역을 복사하고--zones
플래그를 전달합니다. 예:eksctl create cluster --region=us-east-1 --zones=us-east-1a,us-east-1b,us-east-1d
. 이 문제는 다른 리전에서 발생할 수 있지만 덜 일반적입니다. 대부분의 경우--zone
플래그를 사용할 필요가 없습니다.
구성 파일을 사용하여 클러스터 생성
플래그 대신 구성 파일을 사용하여 클러스터를 생성할 수 있습니다.
먼저 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 콘솔에서 스택 생성을 참조하세요. CLoudFormation
새 클러스터에 대한 kubeconfig 업데이트
클러스터가 생성되면 적절한 kubernetes 구성이 kubeconfig 파일에 추가됩니다. 환경 변수 KUBECONFIG
또는 ~/.kube/config
기본적으로 구성한 파일입니다. --kubeconfig
플래그를 사용하여 kubeconfig 파일의 경로를 재정의할 수 있습니다.
kubeconfig 파일 작성 방법을 변경할 수 있는 기타 플래그:
플래그 | type | use | 기본값 |
---|---|---|---|
--kubeconfig |
문자열 |
kubeconfig 쓰기 경로(--auto-kubeconfig와 호환되지 않음) |
$KUBECONFIG 또는 ~/.kube/config |
--set-kubeconfig-context |
bool |
true인 경우 현재 컨텍스트가 kubeconfig로 설정됩니다. 컨텍스트가 이미 설정된 경우 컨텍스트를 덮어씁니다. |
true |
--auto-kubeconfig |
bool |
클러스터 이름으로 kubeconfig 파일 저장 |
true |
--write-kubeconfig |
bool |
kubeconfig 쓰기 전환 |
true |
클러스터 삭제
이 클러스터를 삭제하려면 다음을 실행합니다.
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 리포지토리의 examples/
드라이 런
모의 실행 기능을 사용하면 클러스터 생성을 ClusterConfig 건너뛰고 제공된 CLI 옵션을 나타내며 eksctl에서 설정한 기본값을 포함하는 ClusterConfig 파일을 출력하는 ClusterConfig 파일을 생성할 수 있습니다.
자세한 내용은 드라이 런 페이지에서 확인할 수 있습니다.