개요

Public cloud에 시스템을 운영하면 사용에 따른 즉각적인 비용이 반영되므로 사용하는 자원의 크기나 효율적인 사용에 대한 많은 고민이 동반된다. 사용량에 따라 그 크기를 조절하는 autoscaling이 일반적으로 변화하는 사용량에 대응하도록 활용되고 있다. 그렇다면 기본적으로 개별가격을 적절하게 조정하는 방법은 없을까? 클라우드 제공자들은 다양한 하드웨어를 가상화 크기별로 나누고 이에 따른 타입을 정의하여 서비스를 제공하며 각 타입의 가격을 다르게 측정하여 사용자들이 적절한 자원을 선택하도록 하고있다. (아래는 아마존에서 제공하는 타입의 일부)

PricePerType.png

추가적으로 가상자원 풀을 여유있게 보유하면서 사용자의 요청에 대응하는 클라우드 제공자의 특성에따라 나오는 자원의 제공형태가 있다. 본 페이지에서는 aws 기준으로 이러한 자원에 대해 간단하게 알아보고 이를 활용하여 kubernetes 클러스터를 운영하는 방법에 따라 다뤄보도록 한다.

spot instance?

클라우드 제공자들은 다양한 컴퓨팅 자원을 보유하고 있으면서 사용자에 요청에 따른 자원을 즉각 제공하는 것을 업의 본질로 하고 있다. 따라서 항상 일정수준의 버퍼을 유지하고 있어야 하며 이는 항상 여유자원이 있다는 것을 의미한다. 이에 대한 효율적인 운영을 하기위해 만들어진 개념이 spot instance이다.

https://d1.awsstatic.com/products/EC2/Spot/product-page-diagram_EC2-Spot-Instances.6c3c51f4c6a28cd71d8fef8231510b5619e84eea.png

Amazon EC2 스팟 - 온디맨드 요금에서 최대 90% 절약

단순하게 말하면 매우 저렴한 가격에 인스턴스를 제공하지만 클라우드 제공자의 자원이 부족해지는 경우 가장 먼저 삭제할 수 있다는 조건을 붙이는 것이다. spot 인스턴스의 가격은 시간별 위치별로 달라지며 가격에 따른 사용자의 선택을 강요한다. (시간 당 $xx 인데 쓸건가?)

Untitled

일반적인 사용예

상시 가용성이 필요하지 않은 배치작업 등에 주로 사용되고 테스트나 개발을 위해서도 많이 활용된다. 또한,  EC2 Auto Scaling 기능과 연동을 통해 일반 인스턴스와 함께 배포하여 성능 및 워크로드 비용 최적화에 사용될 수도 있다.

사용해 보기

ec2의 ‘Spot Requests’ 메뉴를 통해 간단하게 spot instance를 사용하는 방법을 살펴보자.

  1. ‘request spot instance’ 선택

    1.request.png

  2. Create Spot Fleet Request

    1. Manually configuration .. vs Template: 따로 준비한 템플릿이 없으니 수동(manully)을 선택하자
    2. AMI: 사용할 이미지
    3. Key pair name: 인스턴스의 기본 ssh key
    4. Target capacity 영역에서
      1. Total target capacity: 인스턴스나 CPU, Memory 기준으로 사용할 크기
      2. Maintain target capacity: Spot 인스턴스가 삭제요청을 받았을때 행동지정 (삭제/정지/동면)
      3. Set maximum cost: 변화하는 Spot 인스턴스의 가격에서 지불의사가 있는 최대값 설정
    5. Network 영역에서
      1. Network: 설치할 VPC 지정
      2. Availability Zone: 설치할 AZ 지정

cluster api