Amazon EKS 클러스터에 연결할 수 없는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 6월 23일

Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터를 생성했지만 클러스터에 연결할 수 없습니다.

간략한 설명

Amazon EKS 클러스터를 생성한 후 AWS Command Line Interface(AWS CLI)를 사용하여 kubeconfig 파일을 구성해야 합니다. 이 구성을 통해 kubectl 명령줄을 사용하여 클러스터에 연결할 수 있습니다.

다음 해결 방법은 AWS CLI update-kubeconfig 명령을 사용하여 클러스터에 대한 kubeconfig 파일을 생성하는 방법을 보여줍니다. AWS CLI를 사용하지 않고 kubeconfig 파일을 수동으로 업데이트하려면 Amazon EKS를 위한 kubeconfig 생성을 참조하세요.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

해결 방법

1.    AWS CLI 버전 1.16.308 이상이 시스템에 설치되어 있는지 확인합니다.

$ aws --version

중요: 시스템에 Python 버전 2.7.9 이상이 설치되어 있어야 합니다. 그렇지 않으면 오류가 발생합니다.

팁: yum, apt-get 또는 macOS용 homebrew와 같은 패키지 관리자는 종종 AWS CLI를 설치하는 데 사용됩니다.

2.    현재 자격 증명을 확인하여 Amazon EKS 클러스터에 대한 권한이 있는 올바른 자격 증명을 사용하고 있는지 확인합니다.

aws sts get-caller-identity

참고: 클러스터가 생성되면 Amazon 클러스터를 생성하는 AWS Identity and Access Management(IAM) 엔터티 사용자 또는 역할에 권한이 자동으로 부여됩니다. 이러한 권한은 컨트롤 플레인의 클러스터의 RBAC 구성에서 부여됩니다. 또한 aws-auth ConfigMap의 Amazon EKS 클러스터에 대한 액세스 권한을 IAM 사용자 또는 역할에 부여할 수 있습니다. 기본적으로 AWS IAM Authenticator for Kubernetes는 구성된 AWS CLI 또는 AWS SDK 자격 증명을 사용합니다. 클러스터의 사용자 또는 IAM 역할 관리를 참조하세요.

3.    클러스터에 대한 kubeconfig 파일을 만들거나 업데이트합니다.

aws eks --region region update-kubeconfig --name cluster_name

참고: 리전을 사용자의 AWS 리전으로 바꿉니다. cluster_name을 클러스터 이름으로 바꿉니다.

기본적으로 구성 파일은 홈 디렉터리의 kubeconfig 경로($HOME/.kube/config)에 생성되거나 해당 위치의 기존 kubeconfig와 병합됩니다. Windows의 경우 파일은 %USERPROFILE%\.kube\config에 있습니다.

Kubernetes 웹 사이트에서 KUBECONFIG 환경 변수 또는 다음 --kubeconfig 옵션을 사용하여 다른 경로를 지정할 수도 있습니다.

$ kubectl get pods --kubeconfig ./.kube/config

참고: kubectl 명령을 실행할 때 인증을 위해 --role-arn 옵션을 사용하여 IAM 역할 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 그렇지 않으면 기본 AWS CLI 또는 AWS SDK 자격 증명 체인의 IAM 엔터티가 사용됩니다. 자세한 내용은 update-kubeconfig를 참조하거나 Amazon EKS용 kubeconfig 생성의 ‘kubeconfig 수동 생성’ 섹션의 6단계를 완료하세요.

4.    구성을 테스트합니다.

$ kubectl get svc

출력 예제:

NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
svc/kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   1m

참고: 다른 권한 부여 또는 리소스 유형 오류가 발생하면 권한 없음 또는 액세스 거부(kubectl)를 참조하세요.