본문 바로가기
카테고리 없음

EKS Cluster를 관리형노드그룹을 Spot 인스턴스로 배포해보기

by james_janghun 2025. 2. 8.

 

관리형 노드그룹은 EC2의 구매옵션을 따릅니다.

이에 EC2 Spot 인스턴스로 관리형 노드를 띄워보도록 하겠습니다.

 

관련 워크숍

https://www.eksworkshop.com/docs/fundamentals/managed-node-groups/spot/

 

Spot instances | EKS Workshop

Take advantage of discounts with Amazon EC2 Spot instances on Amazon Elastic Kubernetes Service.

www.eksworkshop.com

공식사이트 - https://aws.amazon.com/ko/ec2/spot/

 

온디맨드 요금 최대 90% 할인- Amazon EC2 스팟 인스턴스 - Amazon Web Services

Amazon EC2 스팟 인스턴스를 통해 AWS 클라우드의 미사용 EC2 용량을 활용할 수 있으며 온디맨드 가격 대비 최대 90% 할인된 요금으로 사용할 수 있습니다. 빅 데이터, 컨테이너식 워크로드, CI/CD, 웹

aws.amazon.com

 

공식사이트에서는 Delivery Hero의 사례를 제시하고 있습니다. 구체적인 아키텍처를 보고 싶었는데 EKS에서 다양한 인스턴스 유형을 사용했고, 이때 EC2 Spot 인스턴스로 큰 비용을 절감했다고 하고 있습니다. 아마 내용 중 배달 직원으로 부터 원격 측정 데이터를 수집하고, 고객에게 개인화된 데이터를 수집하는데 이를 통해서 음식 픽업 준비 시점, 배달 시간, 배달 거리, 직원 평가 등 다양한 데이터를 조합하는 머신러닝을 돌리는데 Spot 인스턴스를 사용하지 않았나 싶습니다.

 

Open AI도 EKS를 통해서 학습을 진행한다고 하는데, 아무래도 이런 데이터를 수집하고 분석하는 것 또한 다양한 API가 동작하는 시스템이고 이는 정확하게는 대고객 서비스가 아니다 보니 Spot인스턴스로 사용해도 서비스에 지장이 없다고 생각이 됩니다.

 

자 그럼 Spot 인스턴스에 대해서 제대로 학습해봅시다.

 

Spot 인스턴스란?

EC2 인스턴스의 한 유형으로 

스팟 인스턴스는 EC2가 인스턴스를 회수할 시점이 되면 2분전에 알림을 주고 있어, 이에 대해 자동화하여 대비하고 스팟 인스턴스 어드바이저를 통해 다른 스팟 풀의 평균 중단 빈도를 미리 검토하는게 좋습니다.

 

스팟인스턴스의 회수 시점 알람을 자동화하는 방법

벌써 오래된 영상이긴한데, 따라하는데는 무리없는 영상입니다.

https://www.youtube.com/watch?v=7ofH3J3SFsc

 

 

스팟 인스턴스 어드바이저

스팟 인스턴스 어드바이저에서는 제공하는 모든 인스턴스 유형에 대한 중단빈도를 제공하고 있습니다.

https://aws.amazon.com/ko/ec2/spot/instance-advisor/

 

 

 

Spot 인스턴스의 장점

굉장히 저렴하다.

스팟 인스턴스는 시간당 가격으로 스팟 가격을 측정한다.

각 가용 영역에서 인스턴스 유형에 따라 스팟 가격이 다르고 스팟 인스턴스의 공급과 수요의 양에 따라서 점진적으로 조절됩니다. 특히 스팟인스턴스는 용량이 있을때 마다 실행됩니다.

 

따라서 Spot 인스턴스는 무상태, 내결함성, 유연한 애플리케이션에 적합합니다. 예를들면 머신러닝 학습 워크로드, 빅데이터 ETL, 대기열 처리 애플리케이션, 무상태 API 앤드포인트 등이 대표적인 사용사례입니다. 현존하는 제공량이 따라서 굉장히 유동적이기 때문에 언제든 중단되어도 크게 문제없는 워크로드에 적합합니다.

 

 

Spot 인스턴스 이용시 고려사항

https://repost.aws/knowledge-center/eks-spot-instance-best-practices

 

Best practices for using EC2 Spot Instances with Amazon EKS

I want to use Amazon Elastic Compute Cloud (Amazon EC2) Spot Instances with my Amazon Elastic Kubernetes Service (Amazon EKS). What are some best practices?

repost.aws

AWS 커뮤니티에서는 다음과 같이 5가지 고려사항을 이야기해주고 있다.

 

1. Spot 인스턴스는 지속적으로 가져가야하는 job이나 stateful 애플리케이션에서는 사용하지 말 것.

즉 중단되어서는 안되는 지속적인 애플리케이션에 대해서는 적용해서는 안된다.

 

2. EKS에서는 EC2 Auto Scaling Capacity Rebalancing을 통해서 오토스케일링이나 리밸런싱을 쉽게 이용하면서 워크로드에 장애가 발생하지 않도록 활용

아무래도 새로운 Spot노드를 교체하거나 Auto Scaling이 적용될때 기존 EBS 볼륨과 연결이나 데이터베이스와의 통신이 불안정할 수 있으므로 이에 대해 대비할 수 있도록 한다.

 

3. 노드 그룹에 여러 인스턴스 유형 추가

아무래도 Spot 인스턴스는 자체 풀 내에서 사용되기 때문에 해당 풀에 노드 가용 자원이 없어질 수 있으므로 최대한 이와 유사한 스팩의 유형을 여러가지 등록해두는 것을 추천한다. 예를 들어, m5.large(2 vCPU/8 GiB RAM) 인스턴스 유형을 사용한다면, m5a.large, m5n.large, m4.large와 같이 동일한 vCPU 및 RAM 값을 가진 인스턴스를 추가해 두어야 한다.

 

4. 자체 관리 노드 그룹에 AWS NTH를 사용

AWS NTH(Node Termination Handler) 는 핸들러를 통해서 EC2 유지 관리 이벤트, Spot 중단 알림, Auto Scaling 그룹 축소 이벤트 및 가용성 영역 재조정 감지하고 적절하게 대응할 수 있습니다.

 

5. Karpenter를 사용한 Spot 인스턴스 관리

Karpenter는 자동으로 새로운 노드를 오토스케일링 할 수 있는 기능이다. 이때 스팟인스턴스로도 활용할 수 있기 때문에 둘이 잘 활용하면 좋다.

karpenter의 공식문서에서도 spot인스턴스 활용을 언급하고 있다.