내 작업자 노드를 내 Amazon EKS 클러스터에 조인하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 12월 2일

내 작업자 노드가 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에 조인되지 않습니다.

간략한 설명

작업자 노드를 Amazon EKS 클러스터에 조인하려면 다음을 완료해야 합니다.

  • Amazon Virtual Private Cloud(Amazon VPC)에 대한 DNS 지원이 있는지 확인합니다.
  • 인스턴스 프로파일의 작업자 노드에 대한 올바른 권한을 확합니다.
  • 작업자 노드에 대한 사용자 데이터를 구성합니다.
  • 작업자 노드가 EKS 클러스터와 연결된 서브넷에 있는지 확인합니다.
  • 작업자 노드의 NodeInstanceRoleaws-auth ConfigMap을 업데이트합니다.
  • 작업자 노드의 보안 그룹 요구 사항을 충족합니다.
  • 작업자 노드에 대한 태그를 설정합니다.
  • 작업자 노드가 EKS 클러스터의 API 서버 엔드포인트에 도달할 수 있는지 확인합니다.
  • SSH를 사용하여 EKS 작업자 노드의 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 연결하고 kubelet 에이전트 로그를 통해 오류를 검색합니다.

중요: 다음 단계에는 다음 기준을 충족하지 않는 환경에서 EKS 클러스터에 작업자 노드를 등록하는 데 필요한 구성이 포함되어 있지 않습니다.

  • EKS 클러스터의 VPC에서 구성 파라미터 domain-name-serversAmazonProvidedDNS로 설정되어 있습니다. 자세한 내용은 DHCP 옵션 세트를 참조하세요.
  • 작업자 노드를 시작하기 위해 Amazon EKS 최적화 Linux Amazon Machine Image(AMI)를 사용하고 있습니다.
    참고: Amazon EKS 최적화 Linux AMI는 작업자 노드를 Amazon EKS 클러스터에 등록하기 위한 /etc/eks/bootstrap.sh 부트스트랩 스크립트를 포함하여 필요한 모든 구성을 제공합니다.

해결 방법

VPC에 대한 DNS 지원이 있는지 확인

EKS 클러스터의 VPC가 DNS 호스트 이름 및 DNS 확인을 지원하는지 확인합니다.

필요한 경우 VPC에 대한 DNS 지원 속성을 조회하고 업데이트합니다.

인스턴스 프로파일의 작업자 노드에 대한 올바른 권한 얻기

인스턴스 프로파일의 작업자 노드와 연결된 역할에 다음 AWS 관리형 정책을 연결합니다.

  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_CNI_Policy
  • AmazonEC2ContainerRegistryReadOnly

역할에 정책을 연결하려면 IAM 자격 증명 권한 추가(콘솔)를 참조하세요.

작업자 노드에 대한 사용자 데이터 구성

참고: AWS CloudFormation을 사용하여 작업자 노드를 시작하는 경우 작업자 노드에 대한 사용자 데이터를 구성할 필요가 없습니다. 대신, 자체 관리형 Amazon Linux 노드 시작의 ‘AWS 관리 콘솔’ 탭에 있는 지침을 따르세요.

관리형 노드 그룹을 사용하여 작업자 노드를 시작하는 경우 Amazon EKS에 최적화된 Amazon Linux AMI를 사용하여 사용자 데이터를 구성하지 않아도 됩니다. 사용자 지정 AMI를 사용하여 관리형 노드 그룹을 통해 작업자 노드를 시작하는 경우에만 사용자 데이터를 구성해야 합니다.

작업자 노드에 대한 사용자 데이터를 구성하려면 Amazon EC2 인스턴스 시작 시 사용자 데이터를 지정합니다.

예를 들어, Terraform과 같은 서드 파티 도구를 사용하는 경우, 다음과 같이 EKS 작업자 노드를 시작하도록 사용자 데이터(User data) 필드를 업데이트합니다.

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}

중요: ${ClusterName}은 EKS 클러스터의 이름으로 바꿉니다. ${BootstrapArguments}는 추가 부트스트랩 값으로 바꾸거나 이 속성은 비워 둡니다.

작업자 노드가 EKS 클러스터와 동일한 VPC에 있는지 확인

1.    Amazon EKS 콘솔을 엽니다.

2.    [클러스터]를 선택한 다음 해당 클러스터를 선택합니다.

3.    네트워킹(Networking) 섹션에서 클러스터와 연결된 서브넷을 식별합니다.

참고: 작업자 노드를 시작하도록 여러 서브넷을 구성할 수 있습니다. 서브넷은 동일한 VPC에 있어야 하며 적절하게 태그를 지정해야 합니다. EKS는 클러스터 생성 중에 구성한 서브넷에 대해서만 태그를 자동으로 관리합니다. 따라서 서브넷에 적절하게 태그를 지정해야 합니다.

작업자 노드의 NodeInstanceRole을 사용하여 aws-auth ConfigMap 업데이트

aws-auth ConfigMap이 인스턴스 프로파일이 아닌, 작업자 노드의 AWS Identity and Access Management(IAM) 역할로 올바르게 구성되어 있는지 확인합니다.

작업자 노드의 보안 그룹 요구 사항 충족

제어 영역의 보안 그룹 및 작업자 노드 보안 그룹이 인바운드 및 아웃바운드 트래픽에 대한 권장 설정으로 구성되어 있는지 확인합니다.

또한, 사용자 지정 네트워크 ACL 규칙이 포트 80,443 및 1025-65535에 대해 ‘0.0.0.0/0’을 오가는 트래픽을 허용하도록 구성되어 있는지 확인합니다.

작업자 노드에 대한 태그 설정

작업자 노드의 Tag 속성에서 keykubernetes.io/cluster/clusterName으로 설정하고 valueowned로 설정합니다.

자세한 내용은 클러스터 VPC 고려 사항을 참조하세요.

작업자 노드가 EKS 클러스터의 API 서버 엔드포인트에 도달할 수 있는지 확인

다음을 고려합니다.

  • NAT 게이트웨이 또는 인터넷 게이트웨이를 통해 API 엔드포인트로 연결되는 경로가 있는 라우팅 테이블과 연결된 서브넷에서 작업자 노드를 시작할 수 있습니다.
  • 작업자 노드가 제한된 프라이빗 네트워크에서 시작되는 경우에는 작업자 노드가 EKS API 서버 엔드포인트에 도달할 수 있는지 확인합니다.
  • AmazonProvidedDNS 대신, 사용자 지정 DNS를 사용하는 VPC의 일부로 작업자 노드를 시작하면 엔드포인트를 해석하지 못할 수 있습니다. 엔드포인트에 대한 퍼블릭 액세스가 비활성화되고 프라이빗 액세스만 활성화된 경우 해석되지 않은 엔드포인트가 발생합니다. 자세한 내용은 Amazon EKS 클러스터 엔드포인트에 대한 DNS 해석 사용을 참조하세요.
  • 프라이빗 클러스터의 경우 프라이빗 클러스터에 특정한 VPC 엔드포인트를 포함해야 합니다. 자체 관리형 노드와 관리형 노드가 VPC 엔드포인트에 액세스할 수 있는지 확인합니다. 관리형 노드 그룹의 경우 VPC 엔드포인트 보안 그룹은 서브넷 또는 클러스터 보안 그룹에 대한 CIDR을 허용해야 합니다.

SSH를 사용하여 EKS 작업자 노드 인스턴스에 연결하고 kubelet 에이전트 로그를 확인합니다.

kubelet 에이전트는 systemd 서비스로 구성되어 있습니다.

1.    kubelet 로그를 확인하려면 다음 명령을 실행합니다.

journalctl -f -u kubelet

2.    문제를 해결하려면 Amazon EKS 문제 해결 안내서에서 일반적인 오류를 확인하세요.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?