kubectl 치면 error: You must be logged in to the server (Unauthorized) 나옵니다
EKS 클러스터 쓰고 있는데 어제까지 잘 되던 kubectl이 오늘 갑자기 이럽니다.
$ kubectl get nodes error: You must be logged in to the server (Unauthorized)
aws sts get-caller-identity 치면 자격증명은 정상으로 나오고요. 클러스터를 지운 것도 아니고 AWS 콘솔에서는 멀쩡히 보입니다. 노트북 재부팅도 해봤는데 똑같네요. 뭘 확인해봐야 할까요? kubectl 1.31, EKS 1.32 쓰고 있습니다.
그 에러는 kubectl이 API 서버에 보낸 인증 토큰이 거부됐다는 뜻이라, 거의 항상 자격증명 쪽 문제입니다. 어제까지 되다가 갑자기 안 되는 경우 순서대로 확인해보세요.
1. kubeconfig 갱신부터. 제일 흔한 원인이라 이것부터 하고 다시 시도해보세요.
aws eks update-kubeconfig --region ap-northeast-2 --name 클러스터명
2. 지금 kubectl이 쓰는 IAM 주체가 kubeconfig 만들 때와 같은지. get-caller-identity가 "정상"으로 나와도 어느 계정/역할이냐가 중요합니다. AWS_PROFILE이 바뀌었거나 SSO 세션이 만료된 경우가 많아서, SSO 쓰시면 aws sso login 한 번 하고 다시 해보세요. 프로필 여러 개 쓰시면 kubeconfig의 exec 섹션에 --profile을 명시해두면 재발이 없습니다.
3. 1, 2로 안 되면 그 IAM 주체가 클러스터에 등록 안 된 겁니다. EKS는 클러스터에 등록된 주체(access entries 또는 구방식 aws-auth ConfigMap)만 인증을 통과시켜서, 권한이 아무리 커도 등록이 없으면 Unauthorized가 납니다. 클러스터 만든 계정으로 aws eks list-access-entries 확인해보세요.
재부팅이나 kubectl 버전은 이 에러랑 상관없으니 그쪽은 안 보셔도 됩니다.
로그인 후 답글을 남길 수 있습니다.