워커 노드가 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에 가입하지 못합니다.
해결 방법
Amazon EKS 클러스터에 가입하지 못하는 워커 노드 문제를 해결하려면 다음 단계를 완료하십시오.
Systems Manager 자동화를 사용하여 문제 파악
AWSSupport-TroubleshootEKSWorkerNode 자동화 런북을 실행하여 워커 노드가 클러스터에 가입하지 못하게 하는 문제를 파악하십시오.
사전 요구 사항:
- 워커 노드의 AWS Identity and Access Management(IAM) 역할에 AmazonSSMManagedInstanceCore 정책이 연결되어 있어야 합니다.
- 워커 노드가 실행 중이어야 하며 Systems Manager를 통해 액세스할 수 있어야 합니다.
이 자동화를 실행하는 방법에 대한 자세한 내용은 AWSSupport-TroubleshootEKSWorkerNode를 참조하십시오.
VPC의 DNS 구성 확인
다음 단계를 완료하십시오.
- Amazon Virtual Private Cloud(Amazon VPC) 콘솔을 엽니다.
- 탐색 창에서 내 VPC를 선택합니다.
- 원하는 VPC를 선택합니다.
- 작업을 선택한 다음, VPC 설정 편집을 선택합니다.
- 다음 설정을 확인합니다.
DNS 확인에서 DNS 확인이 켜져 있는지 확인합니다.
DNS 호스트 이름에서 DNS 호스트 이름이 켜져 있는지 확인합니다.
- 탐색 창에서 DHCP 옵션 세트를 선택합니다.
- DHCP 옵션 세트를 선택합니다.
- 다음 값을 확인합니다.
domain-name에서 해당 이름이 region.compute.internal로 설정되어 있는지 확인합니다. 예를 들면 us-west-2.compute.internal입니다.
domain-name-servers에서 AmazonProvidedDNS로 설정되어 있는지 확인합니다.
DHCP 옵션 세트에 대한 자세한 내용은 Amazon VPC의 DHCP 옵션 세트를 참조하십시오.
워커 노드의 IAM 권한 확인
다음 단계를 완료하십시오.
- IAM 콘솔을 엽니다.
- 탐색 창에서 역할을 선택합니다.
- 워커 노드 IAM 역할을 검색합니다.
- 역할을 선택합니다.
- 권한 탭을 선택합니다.
- 다음과 같은 관리형 정책이 연결되어 있는지 확인합니다.
AmazonEKSWorkerNodePolicy
AmazonEC2ContainerRegistryPullOnly
참고: VPC CNI에 IRSA 또는 EKS Pod Identity를 사용하지 않는 경우 AmazonEKS_CNI_Policy 관리형 정책도 연결해야 합니다. 하지만 Amazon VPC CNI 추가 기능 전용으로 사용되는 별도의 역할에 이 정책을 연결하는 것이 가장 좋습니다.
노드 IAM 역할을 만드는 방법 대한 자세한 내용은 Amazon EKS 노드 IAM 역할을 참조하십시오.
워커 노드에 대한 인증 구성
다음 방법 중 하나를 선택하여 인증을 구성합니다.
액세스 항목 사용
액세스 항목은 워커 노드에 클러스터에 대한 액세스 권한을 부여하는 데 권장되는 방법입니다.
- Amazon EKS 콘솔을 엽니다.
- 탐색 창에서 클러스터를 선택합니다.
- 해당 클러스터를 선택합니다.
- 액세스 탭을 선택합니다.
- 액세스 항목 섹션에서 워커 노드 IAM 역할 ARN에 대한 항목이 있는지 확인합니다.
- 항목이 없는 경우 액세스 항목 생성을 선택합니다.
- IAM 보안 주체 ARN에서 인스턴스 프로파일 ARN이 아닌 워커 노드 IAM 역할 ARN을 입력합니다.
- 유형에서 노드 유형에 따라 EC2 Linux 또는 EC2 Windows를 선택합니다.
- 다음을 선택한 후 생성을 선택합니다.
액세스 항목에 대한 자세한 내용은 EKS 액세스 항목을 사용하여 IAM 사용자에게 Kubernetes 액세스 권한 부여를 참조하십시오.
aws-auth ConfigMap 사용
클러스터가 액세스 항목을 지원하지 않는 경우 aws-auth ConfigMap 메서드를 사용하십시오.
aws-auth ConfigMap을 구성하는 방법에 대한 자세한 내용은 ConfigMap을 사용하여 IAM 사용자에게 Kubernetes에 대한 액세스 권한 부여를 참조하십시오.
사용자 데이터 구성 확인
자체 관리형 노드의 경우 사용자 데이터에 올바른 클러스터 이름과 구성이 포함되어 있는지 확인합니다.
사용자 데이터에는 클러스터 이름이 있는 부트스트랩 스크립트가 포함되어야 합니다.
#!/bin/bash
/etc/eks/bootstrap.sh my-cluster
참고: my-cluster를 실제 클러스터 이름으로 바꾸십시오.
부트스트랩 스크립트 구성에 대한 자세한 내용은 노드 부트스트래핑을 참조하십시오.
네트워크 연결 확인
다음 단계를 완료하십시오.
- 워커 노드가 클러스터 API 서버 엔드포인트에 도달할 수 있는지 확인합니다.
- 퍼블릭 서브넷의 노드에 퍼블릭 IP 주소가 할당되었는지 확인합니다.
- 프라이빗 서브넷에 있는 노드의 경우 서브넷에 NAT 게이트웨이에 대한 경로가 있는지 확인합니다.
- 보안 그룹이 다음 트래픽을 허용하는지 확인합니다.
클러스터 API 통신을 위한 포트 443
kubelet 통신을 위한 포트 10250
DNS 확인을 위한 포트 53, TCP 및 UDP
보안 그룹 요구 사항에 대한 자세한 내용은 클러스터의 Amazon EKS 보안 그룹 요구 사항 보기를 참조하십시오.
프라이빗 클러스터의 VPC 엔드포인트 확인
클러스터에서 프라이빗 엔드포인트를 사용하는 경우 다음 VPC 엔드포인트가 있는지 확인하십시오.
- com.amazonaws.region.ec2
- com.amazonaws.region.ecr.api
- com.amazonaws.region.ecr.dkr
- com.amazonaws.region.s3
- com.amazonaws.region.sts
사설 클러스터 요구 사항에 대한 자세한 내용은 인터넷 액세스가 제한된 사설 클러스터 배포를 참조하십시오.
클러스터 역할 구성 확인
다음 단계를 완료하십시오.
- IAM 콘솔을 엽니다.
- 탐색 창에서 역할을 선택합니다.
- 클러스터 IAM 역할을 검색합니다.
- 역할을 선택합니다.
- 신뢰 관계 탭을 선택합니다.
- 신뢰 정책에서 eks.amazonaws.com의 역할 수임을 허용하는지 확인합니다.
- 권한 탭을 선택합니다.
- AmazonEKSClusterPolicy 관리형 정책이 연결되어 있는지 확인합니다.
kubelet 로그 검토
워커 노드에서 kubelet 로그를 검토하려면 다음을 수행합니다.
-
SSH 또는 Systems Manager Session Manager를 사용하여 워커 노드에 연결합니다.
-
다음 명령을 실행합니다.
sudo journalctl -u kubelet -f
-
노드가 클러스터에 가입할 수 없는 이유를 나타내는 오류 메시지를 찾아보십시오.
AWS STS 엔드포인트가 활성화되었는지 확인
계정에 AWS 리전의 AWS STS 엔드포인트가 활성화되어 있는지 확인합니다.
STS 엔드포인트 활성화에 대한 자세한 내용은 AWS 리전의 AWS STS 활성화 및 비활성화를 참조하십시오.
VPC 및 서브넷 태그 지정 확인
다음 단계를 완료하십시오.
- Amazon VPC 콘솔을 엽니다.
- 탐색 창에서 서브넷을 선택합니다.
- 워커 노드가 배포되는 서브넷을 선택합니다.
- 태그 탭을 선택합니다.
- 다음 태그가 있는지 확인합니다.
키: kubernetes.io/cluster/my-cluster
값: shared 또는 owned
참고: my-cluster를 실제 클러스터 이름으로 바꾸십시오.
관련 정보
Amazon EKS 클러스터 및 노드 관련 문제 해결
VPC 및 서브넷 고려 사항