Amazon EKS 클러스터의 API 서버 엔드포인트 관련 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 1월 27일

Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터의 엔드포인트 액세스 설정을 퍼블릭에서 프라이빗으로 변경했습니다. 그런데 이제 클러스터가 "failed" 상태로 응답하지 않거나, kubectl 명령을 실행할 수 없습니다.

간략한 설명

Kubernetes API 서버 엔드포인트에 문제가 있는 경우 다음 섹션 중 하나에서 설명하는 단계를 수행하십시오.

  • 클러스터가 "failed" 상태로 응답하지 않고 엔드포인트 액세스 설정을 퍼블릭에서 프라이빗으로 변경할 수 없습니다.
  • 엔드포인트 액세스를 퍼블릭에서 프라이빗으로 변경한 후 클러스터에서 kubectl 명령을 실행할 수 없습니다.

참고: Kubernetes API 서버 엔드포인트에 대한 액세스를 설정하려면 Amazon EKS의 API 서버에 대한 퍼블릭 및 프라이빗 액세스를 설정하려면 어떻게 해야 합니까?를 참조하십시오.

해결 방법

클러스터가 "failed" 상태로 응답하지 않고 엔드포인트 액세스 설정을 퍼블릭에서 프라이빗으로 변경할 수 없습니다.

AWS Identity and Access Management(IAM)의 권한 문제로 인해 클러스터가 "failed" 상태일 수 있습니다.

1.    사용자의 IAM 역할에 AssociateVPCWithHostedZone 작업을 수행할 권한이 있는지 확인합니다.

참고: 작업이 차단되지 않은 경우 API 호출을 차단하고 클러스터가 실패하도록 하는 AWS Organizations 정책이 사용자의 계정에 있는지 확인합니다.

2.    IAM 사용자의 권한이 계정보다 상위 수준에서 묵시적으로(허용 정책 문에 포함되지 않음) 또는 명시적으로(거부 정책 문에 포함됨) 차단되어 있지 않은지 확인합니다.

참고: 계정 관리자가 */* 권한이 부여된 AdministratorAccess IAM 정책을 IAM 사용자에게 연결하더라도 권한이 차단됩니다. IAM 엔터티에 대한 권한은 조직 정책의 권한으로 재정의됩니다.

엔드포인트 액세스를 퍼블릭에서 프라이빗으로 변경한 후 클러스터에서 kubectl 명령을 실행할 수 없습니다.

1.    배스천 호스트 또는 연결된 네트워크(예: 피어링된 VPC, AWS Direct Connect 또는 VPN)를 사용하여 Amazon EKS API 엔드포인트에 액세스하고 있는지 확인합니다.

참고: 프라이빗 액세스 모드에서는 클러스터의 VPC 내에서만 Amazon EKS API 엔드포인트에 액세스할 수 있습니다.

2.    보안 그룹 또는 네트워크 액세스 제어 목록으로 인해 API 호출이 차단되는지 확인합니다.

피어링된 VPC에서 클러스터에 액세스하는 경우, 보안 그룹이 피어링된 VPC에서 제어 플레인의 보안 그룹으로의 포트 443을 통한 액세스를 허용하는지 확인합니다. 또한 피어링된 양쪽 VPC 모두에서 서로에 대해 포트 53이 열려 있는지 확인합니다(DNS 확인에 사용됨).