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 생성을 참조하세요.

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

해결 방법

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

$ aws --version

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

팁: yum, apt-get 또는 macOS용 homebrew와 같은 패키지 관리자는 종종 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에 있습니다.

Kubernetes 웹 사이트에서 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)를 참조하세요.