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

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

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

간략한 설명

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

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

해결 방법

1.    시스템에 AWS CLI 버전 1.16.308 이상이 설치되어 있는지 확인하려면 다음 명령을 실행합니다.

$ aws --version

중요: 시스템에 Python 버전 2.7.9 이상이 설치되어 있어야 합니다. 그렇지 않으면 오류가 발생합니다. 자세한 내용은 FAQ“호스트 이름이 일치하지 않습니다” 오류는 무엇입니까? 섹션을 참조하십시오.

팁: yum, apt-get 또는 macOS용 homebrew와 같은 패키지 관리자는 종종 AWS CLI를 설치하는 데 사용됩니다. AWS CLI의 최신 버전이 있는지 확인하려면 AWS CLI 설치를 참조하십시오.

2.    클러스터에 대한 kubeconfig 파일을 생성하거나 업데이트하려면 다음 명령을 실행합니다.

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

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

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

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

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

참고: kubectl 명령을 실행할 때 인증을 위해 --role-arn 옵션을 사용하여 AWS Identity and Access Management(IAM) 역할 Amazon 리소스 이름(ARN)을 지정할 수 있습니다. 그렇지 않으면 기본 AWS CLI 또는 SDK 자격 증명 체인의 IAM 엔터티가 사용됩니다. 기본 AWS CLI 또는 SDK 자격 증명을 보려면 aws sts get-caller-identity 명령을 실행합니다.

자세한 내용은 update-kubeconfig를 참조하십시오.

3.    구성을 테스트하려면 다음 명령을 실행합니다.

$ kubectl get svc

출력은 다음과 비슷해야 합니다.

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

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