Ssoon

[1주차] Amazon EKS 시작하기 - Nodes - 관리형 노드 그룹 본문

AWS EKS Workshop Study

[1주차] Amazon EKS 시작하기 - Nodes - 관리형 노드 그룹

구구달스 2023. 4. 25. 20:13
CloudNet@ 팀의 AWS EKS Workshop Study 1주차 정리입니다.
# Amazon EKS User Guide 참고

Managed Node Groups

  • Kubernetes 애플리케이션을 실행하기 위해 컴퓨팅 용량을 제공하는 Amazon EC2 인스턴스를 별도로 프로비저닝하거나 등록할 필요가 없습니다.
  • 노드 업데이트 및 종료는 자동으로 노드를 드레이닝하여 애플리케이션을 계속 사용할 수 있도록 합니다.
  • 모든 관리형 노드는 Amazon EKS에서 관리하는 Amazon EC2 Auto Scaling 그룹의 일부로 프로비저닝됩니다.

EKS 노드 IAM 역할 생성

EKS 노드 kubelet 데몬은 사용자를 대신하여 AWS API를 호출합니다.

노드를 시작해 클러스터에 등록하려면 시작할 때 노드에서 사용할 IAM 역할을 생성해야 합니다.

노드를 생성하려면 다음 IAM 정책을 사용하여 IAM 역할을 만들어야 합니다.

역할(Roles) 페이지에서 역할 생성(Create role)을 선택합니다.

1단계. 신뢰할 수 있는 엔터티 선택 (Select trusted entity)

2단계. 권한 추가(Add permissions)

AmazonEKSWorkerNodePolicy 추가

AmazonEC2ContainerRegistryReadOnly 추가

AmazonEKS_CNI_Policy 추가

3단계. 이름 지정, 검토 및 생성

관리형 노드 그룹 생성

1단계. 노드 그룹 구성

이름 - 관리형 노드 그룹의 고유한 이름을 입력합니다. 

노드 IAM 역할 - 노드 그룹에 사용할 노드 인스턴스 역할을 선택합니다.

2단계. 컴퓨팅 및 조정 구성 설정

🧿 노드 그룹 컴퓨팅 구성

AMI 유형 

 – AMI 유형을 선택합니다. 

 

🧿 EKS optimized Amazon Linux AMIs

Amazon Linux 2를 기반으로 하고, Amazon EKS 노드에 대한 기본 이미지

  • kubelet
  • AWS IAM 인증자
  • Docker(Amazon EKS 버전 1.23 이하)
  • containerd

🧿 EKS optimized accelerated Amazon Linux AMIs

GPU 및 Inferentia(AWS에서 개발한 딥 러닝 추론 가속기) 기반 워크로드를 지원

  • NVIDIA 드라이버
  • nvidia-container-runtime(기본 실행 시간으로)
  • AWS Neuron 컨테이너 런타임

🧿 EKS optimized Arm Amazon Linux AMIs

Arm 기반 프로세서에서 최적화된 Amazon Linux 2 AMI입니다. 이를 사용하여 EKS에서 Arm 기반 클러스터를 쉽게 배포하고 관리할 수 있습니다.

 

🧿 EKS optimized Bottlerocket AMIs

Bottlerocket은 Linux 기반 오픈 소스 운영 체제로, AWS에서 가상 머신 또는 베어 메탈 호스트에서 컨테이너를 실행하기 위해 특별히 개발했습니다. 안전하며 컨테이너를 실행하는 데 필요한 최소한의 패키지만 포함합니다. 이는 취약성의 공격 표면과 영향을 줄입니다. 

 

용량 유형 

  - 용량 유형을 선택합니다.

  • 동일한 노드 그룹 내에 서로 다른 용량 유형을 혼합할 수 없습니다.
  • 두 용량 유형을 모두 사용하려면 각각 고유한 용량 및 인스턴스 유형을 가진 별도의 노드 그룹을 생성합니다.

🧿 Ondemand

  • 온디맨드 용량을 프로비저닝하기 위한 할당 전략은 prioritized 로 설정됩니다. 이는 관리형 노드 그룹에서 인스턴스 유형을 할당할 때, 우선순위에 따라 결정된 순서대로 사용됩니다.
  • API에 전달된 인스턴스 유형의 순서에 따라 관리형 노드 그룹이 온디맨드 용량을 채울 때, 먼저 사용할 인스턴스 유형을 결정합니다.
  • 예를 들어, API에서 t3.medium, m5.large, r5.xlarge 순으로 인스턴스 유형을 전달받았을 때, t3.medium 인스턴스 유형을 먼저 할당하고, 그 다음 m5.large, r5.xlarge 순으로 할당하게 됩니다.

🧿 Spot

  • 스팟 인스턴스로 관리형 노드 그룹을 구성하여 Amazon EKS 클러스터에서 실행되는 컴퓨팅 노드의 비용을 최적화할 수 있습니다.
  • 팟 용량을 프로비저닝하기 위한 할당 전략은 capacity-optimized 로 설정됩니다. 이는 스팟 노드가 최적의 스팟 용량 풀에서 프로비저닝되도록 합니다.
  • AWS는 여러 가용 영역에 걸쳐 다양한 스팟 인스턴스를 보유하고 있으며, 이를 스팟 용량 풀이라고 합니다.
  • capacity-optimized 할당 전략을 사용하면, EKS 관리형 노드 그룹에서 요청한 인스턴스 유형과 용량에 맞게 가장 최적의 스팟 용량 풀에서 스팟 노드를 프로비저닝합니다.

🧿 Spot Capacity Rebalancing

  • 스팟 인스턴스는 온디맨드 인스턴스보다 저렴하게 사용할 수 있지만, 인스턴스 종료 위험이 높은 단점이 있습니다.
  • 하지만 이러한 위험을 완화하기 위해 Amazon EC2는 스팟 인스턴스 용량 리밸런싱 기능을 제공합니다.
  • 리밸런싱은 EC2가 가용한 인스턴스 용량을 효과적으로 분산시키는 프로세스입니다.
  • 리밸런싱은 다른 인스턴스로 이동하여 특정 인스턴스에서 공급 부족이 발생하지 않도록 보장합니다.
  • Amazon EKS에서 스팟 노드를 사용할 때는 이러한 리밸런싱 기능이 활성화되어 있어야 합니다. 이렇게 하면 스팟 노드가 중단될 경우, EKS가 스팟 노드를 안전하게 비우고 리밸런싱할 수 있어서, 애플리케이션 중단을 최소화할 수 있습니다.

🧿 용량 유형 선택 시 고려 사항

  • 스팟 인스턴스는 유연한 무상태 내결함성 애플리케이션에 적합합니다. 여기에는 배치 및 기계 학습 교육 워크로드, Apache Spark와 같은 빅 데이터 ETL, 대기열 처리 애플리케이션 및 무상태 API 엔드포인트가 포함됩니다. 
  • 내결함성이 없는 애플리케이션의 경우 온디맨드를 사용하는 것이 좋습니다. 모니터링 및 운영 도구와 같은 클러스터 관리 도구, StatefulSets가 필요한 배포, 상태 유지 애플리케이션(예: 데이터베이스)이 여기에 포함됩니다.

인스턴스 유형 - 기본적으로 하나 이상의 인스턴스 유형이 지정됩니다. 

  • 용량 유형(Capacity type)에 대한 스팟(Spot)을 선택한 경우 가용성을 높이기 위해 여러 인스턴스 유형을 지정하는 것이 좋습니다.

디스크 크기 - 노드 루트 볼륨에 사용할 디스크 크기(GiB)를 입력합니다.

 

🧿 노드 그룹 조정 구성

  • 원하는 크기 - 시작할 때 관리형 노드 그룹에서 유지해야 하는 현재 노드 수를 지정합니다.
  • 최소 크기 - 관리형 노드 그룹이 확장될 수 있는 최소 노드 수를 지정합니다.
  • 최대 크기 - 관리형 노드 그룹이 확장될 수 있는 최대 노드 수를 지정합니다.
Amazon EKS는 노드 그룹을 자동으로 확장 또는 축소하지 않습니다. 그러나 Kubernetes Cluster Autoscaler가 이 작업을 수행하도록 구성할 수 있습니다.

 

🧿 노드 그룹 업데이트 구성

EKS 관리형 노드 그룹은 노드를 최신 AMI 버전으로 병렬로 업데이트하는 작업을 지원합니다.

 기본적으로 노드는 한 번에 하나씩 업데이트됩니다. 그러나 애플리케이션이 더 높은 수준의 중단을 허용할 수 있는 경우 병렬화 수준을 높여 노드 그룹 버전 업데이트를 완료하는 데 걸리는 전체 시간을 줄일 수 있습니다.

 노드 그룹의 사용할 수 없는 최대 노드 수를 절대 수 또는 노드 그룹 크기의 백분율로 설정하여 이 병렬화 수준을 높일 수 있습니다.

  • 숫자(Number) - 노드 그룹에서 병렬로 업데이트할 수 있는 노드 수를 선택하고 지정합니다.
  • 비율(Percentage) - 노드 그룹에서 병렬로 업데이트할 수 있는 노드의 비율을 선택하고 지정합니다. 이 기능은 노드 그룹에 많은 수의 노드가 있는 경우에 유용합니다.

 

3단계. 네트워킹 지정

 서브넷 - 관리형 노드를 시작할 서브넷을 선택합니다.

 노드에 대한 SSH 액세스 구성(Configure SSH access to nodes)(선택 사항). SSH를 활성화하면 문제가 있는 경우 인스턴스에 연결하여 진단 정보를 수집할 수 있습니다. 노드 그룹을 생성할 때 원격 액세스를 사용 설정하는 것이 좋습니다. 노드 그룹을 생성한 후에는 원격 액세스를 사용 설정할 수 없습니다.

 

 생성된 Node 정보를 확인합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments