Amazon EKS에서 클러스터 생성 오류를 해결하려면 어떻게 해야 하나요?
최종 업데이트 날짜: 2022년 8월 26일
AWS CloudFormation 또는 eksctl을 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터를 프로비저닝할 때 서비스 오류가 발생합니다.
간략한 설명
다음 문제 해결 옵션을 고려하세요.
- 대상 가용 영역에 클러스터를 지원할 수 있는 충분한 용량이 없다는 오류 메시지가 표시됩니다. 다른 가용 영역에 클러스터 재생성(Recreate the cluster in a different Availability Zone) 섹션의 단계를 완료하세요.
- 리소스 생성에 실패했다는 오류 메시지가 표시됩니다. 클러스터를 생성할 수 있는 올바른 IAM 권한이 있는지 확인(Confirm that you have the correct IAM permissions to create a cluster) 섹션 또는 Amazon VPC 리소스 모니터링(Monitor your Amazon VPC resources) 섹션의 단계를 완료하세요.
- 워커 노드를 기다리는 동안 생성 시간이 초과되었다는 오류 메시지가 표시됩니다. 워커 노드가 컨트롤 플레인 API 엔드포인트에 도달할 수 있는지 확인(Confirm that your worker nodes can reach the control plane API endpoint) 섹션의 단계를 완료하세요.
해결 방법
다른 가용 영역에서 클러스터 다시 생성
용량이 제한된 가용 영역에서 컨트롤 플레인 인스턴스를 시작하면 다음과 비슷한 오류가 발생할 수 있습니다.
Cannot create cluster 'sample-cluster' because us-east-1d, the targeted availability zone, does not currently have sufficient capacity to support the cluster. Retry and choose from these availability zones: us-east-1a, us-east-1b, us-east-1c
이 오류를 해결하려면 오류 메시지에서 권장 가용 영역을 사용하여 클러스터를 다시 생성(create the cluster)합니다.
CloudFormation을 사용하여 클러스터를 프로비저닝하는 경우 서브넷(Subnets) 파라미터에 가용 영역과 일치하는 서브넷 값을 추가합니다.
-또는-
eksctl을 사용하는 경우 -zones 플래그를 사용하여 다른 가용 영역에 대한 값을 추가합니다. 예를 들어 다음과 같습니다.
$ eksctl create cluster 'sample-cluster' --zones us-east-1a,us-east-1b,us-east-1c
참고: sample-cluster를 클러스터 이름으로 바꿉니다. us-east-1a, us-east-1b 및 us-east-1c를 가용 영역으로 바꿉니다.
클러스터를 생성할 수 있는 올바른 IAM 권한이 있는지 확인
클러스터를 생성할 때 올바른 AWS Identity and Access Management(IAM) 권한이 있는지 확인합니다. 여기에는 Amazon EKS 서비스 IAM 역할에 대한 올바른 정책이 포함됩니다.
eksctl을 사용하여 IAM 역할 및 보안 그룹과 같은 클러스터의 필수 리소스를 생성할 수 있습니다. 필요한 최소 권한은 시작하는 eksctl 구성에 따라 다릅니다. 자세한 내용은 eksctl GitHub 커뮤니티의 문제 해결 솔루션을 참조하세요.
클러스터에 IAM 권한 문제가 있는 경우 eksctl에서 다음과 유사한 오류가 표시될 수 있습니다.
API: iam:CreateRole User: arn:aws:iam::your-account-id:user/your-user-name is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::your-account-id:role/eksctl-newtest22-cluster-ServiceRole-10NXBYLSN4ULP
위의 오류를 해결하려면 eksctl 웹 사이트에서 eksctl 사용 사례를 실행하기 위한 최소 IAM 정책을 참조하세요. 또한 Amazon EKS의 Identity and Access Management 및 IAM 정책에서 액세스 거부 또는 무단 작업 오류를 해결하려면 어떻게 해야 합니까?를 참조하세요.
Amazon VPC 리소스 모니터링
클러스터를 생성하면 eksctl은 기본적으로 Amazon Virtual Private Cloud(VPC)를 생성합니다. eksctl이 새 Amazon VPC를 생성하지 않도록 하려면 구성 파일에서 사용자 지정 Amazon VPC와 서브넷을 지정해야 합니다.
클러스터에 Amazon VPC 제한에 문제가 있는 경우 다음 오류 메시지가 표시될 수 있습니다.
The maximum number of VPCs has been reached. (Service: AmazonEC2; Status Code: 400; Error Code: VpcLimitExceeded; Request ID: a12b34cd-567e-890-123f-ghi4j56k7lmn)
앞의 오류를 해결하려면 리소스를 모니터링합니다. 예를 들어, AWS 리전의 Amazon VPC 개수 또는 클러스터를 생성한 리전별 인터넷 게이트웨이를 확인합니다. 자세한 내용은 Amazon VPC 할당량을 참조하세요.
해당 리전의 Amazon VPC 리소스 수에 대한 리소스 제한과 관련하여 문제가 있는 경우 다음 옵션 중 하나를 고려합니다.
(옵션 1)기존 Amazon VPC를 사용하여 리소스 제약 극복
클러스터의 워커 노드를 프로비저닝하려는 Amazon VPC 및 서브넷을 지정하는 구성 파일을 생성합니다.
$ eksctl create cluster sample-cluster -f cluster.yaml
-또는-
(옵션 2)리소스 제약 극복을 위해 서비스 할당량 증가 요청
eksctl에서 프로비저닝한 클러스터의 CloudFormation 스택 이벤트에서 리소스에 대한 서비스 할당량 증가를 요청합니다.
워커 노드가 컨트롤 플레인 API 엔드포인트에 도달할 수 있는지 확인
eksctl이 클러스터를 배포할 때 클러스터를 조인하고 준비 상태에 도달하기 위해 시작된 워커 노드를 기다립니다. 워커 노드가 컨트롤 플레인에 도달할 수 없거나 잘못된 IAM 역할이 있는 경우 다음 오류가 발생할 수 있습니다.
timed out (after 25m0s) waiting for at least 4 nodes to join the cluster and become ready in "eksfbots-ng1"
이 오류를 해결하려면 클러스터에 조인할 워커 노드를 가져오고, 워커 노드가 준비 상태인지 확인합니다.