Ssoon
[1주차] Amazon EKS 시작하기 - Nodes - 관리형 노드 그룹 본문
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 정보를 확인합니다.
'AWS EKS Workshop Study' 카테고리의 다른 글
[1주차] Amazon EKS 시작하기 - Nodes - Fargate (0) | 2023.04.25 |
---|---|
[1주차] Amazon EKS 시작하기 - Nodes - 자체 관리형 노드 (0) | 2023.04.25 |
[1주차] Amazon EKS 시작하기 - Nodes (0) | 2023.04.25 |
[1주차] Amazon EKS 시작하기 - Cluster 생성 (4) | 2023.04.25 |
[1주차] Amazon EKS (Elastic Kubernetes Service) (0) | 2023.04.24 |