Amazon EKS API 서버에 연결할 때 무단 서버 오류를 해결하려면 어떻게 해야 합니까?

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

kubectl 명령을 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS) API 서버에 연결할 때 "error: You be logged in to the server(Unauthorized)(오류: 무단 서버에 로그인했습니다)" 오류 메시지가 표시됩니다. 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

Amazon EKS API 서버에 연결하기 전에 AWS 명령줄 인터페이스(AWS CLI)의 최신 버전을 설치하고 구성합니다.

그런 다음 클러스터 관리자는 다음 섹션 중 하나의 단계를 완료해야 합니다.

  • 클러스터 생성자인 경우
  • 클러스터 생성자가 아닌 경우

마지막으로 오류 메시지를 받은 사람이 You're the user or role that received the error(오류를 수신한 사용자 또는 역할) 섹션의 단계를 완료해야 합니다.

해결 방법

클러스터 생성자인 경우

클러스터 생성자인 경우 다음 단계를 완료합니다.

1.    AWS CLI 사용자 또는 역할의 구성을 보려면 다음 명령을 실행합니다.

$ aws sts get-caller-identity

출력은 AWS Identity and Access Management(IAM) 사용자 또는 역할의 Amazon 리소스 이름(ARN)을 반환합니다. 다음 예제를 참조하십시오.

{
    "UserId": "XXXXXXXXXXXXXXXXXXXXX",
    "Account": "XXXXXXXXXXXX",
    "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser"
}

2.    ARN이 클러스터 생성자와 일치하는지 확인합니다.

3.    다음 명령 중 하나를 사용하여 kubeconfig 파일을 업데이트하거나 생성합니다.

IAM 사용자로서 다음 명령을 실행합니다.

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

참고: eks-cluster-name을 사용자의 클러스터 이름으로 교체합니다. aws-region을 사용자의 AWS 리전으로 교체합니다.

IAM 역할로 다음 명령을 실행합니다.

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

참고: eks-cluster-name을 사용자의 클러스터 이름으로 교체합니다. aws-region을 사용자의 AWS 리전으로 교체합니다.

4.    kubeconfig 파일이 업데이트되었는지 확인하려면 다음 명령을 실행합니다.

$ kubectl config view --minify

5.    IAM 사용자 또는 역할이 인증되었는지 확인하려면 다음 명령을 실행합니다.

$ kubectl get svc

다음과 유사한 출력이 표시됩니다.

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

클러스터 생성자가 아닌 경우

클러스터 생성자가 아닌 경우 다음 단계를 완료합니다.

1.    AWS CLI 사용자 또는 역할의 구성을 보려면 다음 명령을 실행합니다.

$ aws sts get-caller-identity

출력은 IAM 사용자 또는 역할의 ARN을 반환합니다.

2.    클러스터 소유자 또는 관리자에게 IAM 사용자 또는 역할을 aws-auth ConfigMap에 추가하도록 요청합니다.

3.    텍스트 편집기에서 aws-auth ConfigMap을 편집하려면 클러스터 소유자 또는 관리자가 다음 명령을 실행해야 합니다.

$ kubectl edit configmap aws-auth -n kube-system

4.    IAM 사용자 또는 IAM 역할을 추가하려면 다음 단계 중 하나를 완료하십시오.

IAM 사용자를 mapUsers에 추가합니다. 다음 예제를 참조하십시오.

mapUsers: |
  - userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser
    username: testuser
    groups:
      - system:masters

IAM 역할을 mapRoles에 추가합니다. 다음 예제를 참조하십시오.

mapRoles: |
  - rolearn: arn:aws:iam::XXXXXXXXXXXX:role/testrole
    username: testrole
    groups:
      - system:masters

참고: system:masters 그룹은 수퍼유저 액세스를 통해 모든 리소스에 대해 모든 작업을 수행할 수 있습니다. 자세한 내용은 기본 역할 및 역할 바인딩을 참조하십시오.

오류를 수신한 사용자 또는 역할인 경우

오류를 수신한 경우 다음 단계를 완료하십시오.

1.    aws-auth ConfigMap이 업데이트된 후 kubeconfig 파일을 업데이트하거나 생성하려면 다음 명령 중 하나를 실행합니다.

IAM 사용자로서 다음 명령을 실행합니다.

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region

참고: eks-cluster-name을 사용자의 클러스터 이름으로 교체합니다. aws-region을 사용자의 AWS 리전으로 교체합니다.

2.    IAM 역할로 다음 명령을 실행합니다.

$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region --role-arn arn:aws:iam::XXXXXXXXXXXX:role/testrole

참고: eks-cluster-name을 사용자의 클러스터 이름으로 교체합니다. aws-region을 사용자의 AWS 리전으로 교체합니다.

3.    kubeconfig 파일이 업데이트되었는지 확인하려면 다음 명령을 실행합니다.

$ kubectl config view --minify

4.    IAM 사용자 또는 역할이 인증되었는지 확인하려면 다음 명령을 실행합니다.

$ kubectl get svc

다음과 유사한 출력이 표시됩니다.

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

참고: 오류가 계속 발생하면 문제 해결 지침은 RBAC 권한 부여 사용을 참조하십시오.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?