반응형
Intro
- EKS의 NodeGroup생성시 EC2 insatnce가 클러스터에 조인이 안되는 경우가 발생할 수 있습니다.
- 클러스터 조인이 안돼는 이유에는 여러가지 케이스가 있겠지만 아래 상황에서 조인이 안돼는 이유와 트러블슈팅을 해보도록 하겠습니다.
이슈 상황
- EKS NodeGroup을 Custom AMI로 사용하기 위해 eksctl로 EKS를 생성하였습니다. eksctl custom AMI생성 하기
- 이 경우 LaunchTemplate이 자동으로 생성이되며, 그 안에는 eksctl yaml에 설정한 custom AMI 이미지 ID가 등록이 되어있습니다.
- EKS Cluster 생성완료 후 NodeGroup Instance가 생성이 되었지만, Node생성 실패로 트러블슈팅이 필요한 상황입니다.
kubelet이 잘 동작하는지 확인
# kubelet동작 확인
ps -ef | grep kubelet
- EKS Optimized AMI에는 부트스트랩 스크립트(/etc/eks/bootstrap.sh)가 포함되어있습니다.
- 부트스트랩 스크립트를 까보면 그안에 kubelet 실행 명령어
systemctl start kubelet
이 포함되어있습니다. - 기본적으로 WorkerNode가 시작될때 부트스트랩이 실행되도록 되어있으나 CustomAMI를 사용할 경우 UserData에 부트스트랩 실행 커맨드를 넣어주어야합니다.
- 위 경우는 kubelet이 잘 동작하지 않은 상황이며,그 이유는 부트스트랩이 동작하지 않다고 판단할 수 있습니다.
- 따라서 EC2가 실행될때 동작하는 UserData의 스크립트에 문제가 없었는지 확인이 필요합니다.
cloud-init-output.log 확인
- cloud init output log는 UserData에서 실행된 shell script를 디버깅할 수 있습니다.
- UserData에 넣어두었던 스크립트에 이상이 있었는지 확인해보겠습니다.
cat /var/log/cloud-intit-output.log
- "No cluster found for Name" 이라는 메시지가 보이며
- /var/lib/cloud/instance/scripts 의 실행이 실패되었다고 확인이 됩니다.
/var/lib/cloud/instance/scripts 확인
- 해당 스크립트를 확인해보니 eksctl yaml에서
overrideBootstrapCommand
필드의 스크립트에 문제가 있었나 봅니다. - 뭐가 문제인지 확인해보니 실제 생성한 클러스터와 해당 스크립트에 클러스터의 이름이 일치하지가 않았습니다.
강제로 bootstrap실행
- 클러스터 이름을 변경한 후 강제로 부트스트랩을 실행하였더니 잘 실행이 되며
- 시간이 지나고 클러스터 조인이 잘되는 것을 확인하였습니다.
반응형
'IT > AWS' 카테고리의 다른 글
[AWS] S3 Object 권한 이슈 (0) | 2021.08.04 |
---|---|
[AWS] EKS Cluster kube config등록 (0) | 2021.06.28 |
[AWS] eksctl을 이용한 EKS 생성 (Managed NodeGroup with Launchtemplate + Custom AMI) (0) | 2021.06.24 |
[AWS] eksctl을 이용한 EKS 생성 (Managed NodeGroup + Managed AMI) (0) | 2021.06.24 |
[AWS] EKS IAM USER 추가 하기 (0) | 2021.06.22 |