정말 저렴한 가격으로 관리형 쿠버네티스 엔진을 사용할 수 있는 Vultr Kubernetes Engine을 소개한다.
Vultr란?
Vultr는 흔히 VPS(Virtual Private Server) 서비스를 제공하는 업체로 많이 알려져있다. 기존에 Cafe24같은 호스팅 서비스에 비하여 단독 서버를 제공해서 다르게 불리는 걸로 알고 있다. EC2같은 서비스는 비슷하지만 지향점이 조금 다르고, AWS Lightsail이나 Linode, DigitalOcean 등 업체/서비스랑 비슷하다고 보면 된다. 저렴한 비용에 적절한 성능의 서버를 제공하고, 거기에 기본 Outbound Traffic을 넉넉히 잡아서 제공하는게 기본 컨셉이다.
기존에는 그냥 '넉넉하고 적당한 성능의 서비스가 필요하다면 고를 수 있는 선택지' 정도로 생각했는데, 여기에 관리형 쿠버네티스 서비스인 Vultr Kubernetes Engine(이하 VKE)이 있다고 하여 체험삼아 사용해봤다. 그런데 생각보다 비용도 합리적이고 서비스 자체도 만족스러워서 관련 사용기를 작성해보려 한다.
왜 관리형 쿠버네티스 서비스를 사용하는가?
클라우드 3사에서 제공해주는 쿠버네티스 서비스들이 있다.
- AWS의 EKS (Elastic Kubernetes Service)
- GCP의 GKE (Google Kubernetes Engine)
- Azure의 AKS (Azure Kubernetes Service)
업계에서도 이 3사에서 제공해주는 관리형 서비스를 많이 사용하고 있다. 자료도 많고 사용자도 많아서 문제가 생겼을 때 대응하기도 좋고, 여러모로 프로덕션 환경에 적용하기에 적합하다. 특히 마스터 노드를 클라우드에서 직접 관리해주기 때문에, 컨트롤 플레인을 엔지니어가 따로 세팅하고 관리해야하는 수고에서 벗어날 수 있다.
이런 이유로 쿠버네티스를 전문적으로 운영할 인력이 충분하지 않은 기업에서는 대부분 관리형 쿠버네티스 서비스를 사용하고, 큰 규모의 기업에서도 관리형 서비스를 채택하는 경우가 적지 않다. 다만 이미 전문인력이 있고, 내부적으로 정교하게 관리하고자 하는 경우에는 자체 구축하기도 한다.
이런 관리형 서비스도 중소규모 서비스나 사업체에서는 비용 문제에 직면한다. 일반적으로 마스터 노드에도 운영비용을 받기 때문에 통상 시간당 $0.1, 한 달에 약 10만원 가량의 비용이 들어간다. (GKE에서는 여기에 무료 구간을 둬서 클러스터 한 개 정도까지는 마스터 노드에 비용을 부과하지 않기 때문에 조금 낫긴 하다) 여기에 워커 노드 비용도 따로 들고, 로드 밸런서, 블록 스토리지, 네트워크 비용 등 여러 비용들이 추가로 들어간다. 결국 서비스 하나를 띄워도 최소 15~20만원은 생각하고 들어가야 한다.
VKE의 과금 구조
이걸 생각하고 VKE의 과금 구조를 보면 정말 저렴하다.
일단 마스터 노드 비용이 무료이다. 클러스터 n개까지 무료가 아니라, 몇 개를 만들어도 무제한 무료이다. 여기서부터 게임이 끝났는데, 조금 더 들어가보면 가격 경쟁력이 괜찮게 느껴진다.
일반적인 용도로 쓰이는 Cloud Compute 티어의 서버는 아래와 같은 가격 구성을 보인다.
일반적으로 많이 사용하는 2 vCPU에 4GB 메모리 구성이 $20이다. 거기에 서버당 3TB의 트래픽 비용이 포함되어 있다.
아래는 같은 2코어 4GB 메모리를 사용하는 AWS EC2 t3.medium 인스턴스와 Vultr의 Cloud Compute 인스턴스를 비교한 표이다.
[클라우드] 인스턴스 유형 | [AWS] t3.medium | [Vultr] Cloud Compute 2C 4G Mem |
월 비용 (시간당 비용 * 720) | 0.052 * 720 = 37.44 | 0.03 * 720 = 21.6 |
Data Transfer 비용 (3TB 사용 가정) | 0.126 * 3000 = 378 | 0 (포함) |
스토리지 비용 (80G) | gp3 0.0912 * 80 = 7.296 | 0 (포함) |
합계 | $ 422.736 | $ 21.6 |
가격 차이가 거의 20배 가까이 난다. 물론 Vultr에 최대한 유리한 구조로 항목이 구성되긴 했으나, 비용 자체가 차이가 많이 나긴 한다. 표를 통해 보면 Data Transfer 비용이 나오지 않는다는게 굉장한 장점이다. 여기에 인스턴스 비용 자체도 저렴한 편이다.
Vultr에서는 쿠버네티스의 로드밸런서 타입으로 쓸 수 있게 자체적인 로드밸런서를 제공한다. 이거는 개당 고정비용 월 $10이다.
Block Storage도 제공하는데 HDD 타입은 월 기준 40GB / $1 이고, SSD 타입은 10GB / $1 이다.
VKE로 샘플 클러스터 비용 산출해보기
해당 내용을 바탕으로 샘플 쿠버네티스 클러스터를 만든다고 가정해보자.
먼저 워커 노드는 2코어 4GB 메모리 인스턴스로 4대를 띄워보자. 로드밸런서는 Ingress Controller용으로 하나를 띄우고, 내부에 PV로 사용할 Block Storage도 5개정도를 띄워보자.
- 마스터 노드 비용 - $0
- 워커 노드 비용 - $21.6 * 4 = $86.4
- 로드밸런서 비용 - $10 * 1 = $10
- Block Storage 비용 - $1 * 5 = $5
모두 합치면 $101.4 이다! 소규모 서비스나 테스트 환경 구성에서 이정도 사양(합계 8코어 16GB 메모리)이면 대부분 차고 넘치는 수준이다. 정말 저렴하게 사용할 수 있다!
실제 사용하면서 경험한 특징
Easy Configuration
이전에 GKE를 띄워보면서 좀 곤란했던 점은 gcloud cli를 설치하고 인증하고 여러 과정을 거쳐야지만 클러스터 api를 이용할 수 있다는 점이었다. 당시 GCP를 처음 써봐서 많이 헤맨걸 수도 있으나, 초기 세팅하기에 많이 불편한 건 사실이었다.
그런데 VKE는 정말 간단하게 설정 방법을 제공한다. 바로 Configuration File을 직접 웹에서 다운받을 수 있게 해준다.
대시보드 화면에서 'Download Configuration' 버튼을 누르면 kubeconfig 파일이 다운받아진다. 그걸 그대로 kube api 호출에 사용할 수 있다! 보안상 취약점이 있을 수 있으나, 초기 세팅 면에서는 정말 쉽고 편하게 느껴진다.
로드밸런서의 제약 조건이 많다
Vultr의 로드밸런서가 실제 사용해보면 자잘한 제약사항들이 많다. 일단 기본적으로 L4 로드밸런서이다. 그래서 L7 기능을 제공해주지 않아 처음에 ALB같은 역할을 기대했다 실망하기도 했다. 다만 이거는 ingress controller를 쓰면 되는 것이니 문제될 부분은 아니다.
그런데 문제는 로드밸런서가 L4이지만 UDP를 지원하지 않는다. AWS에서는 아무 걱정 없던 부분에서 갑자기 막히니 좀 당황스러웠다. 이건 Wireguard를 세팅하다가 알게 된건데, 왜 자꾸 연결이 안 되나 했는데, 프로토콜을 지원하지 않아서였다... 결국 VPN 세팅은 다른 방법으로 했다. (Pritunl VPN을 처음 써봤는데 만족스러웠다. 이건 추후 포스트 예정)
Block Storage에 제약 조건이 걸려있다 (최소 용량)
Helm으로 이것저것 필요한 것들을 설치하는데 이상하게 PVC에서 에러를 뿜어냈다. 뭐지하고 살펴보니까 PV를 못 만들고 있었다. 그러다 문서를 보게 되었는데... Vultr의 Block Storage에는 최소 용량이 정해져있다. SSD는 10GB, HDD는 40GB로 정해져있어서 8GB로 설정된 PVC가 에러를 내뿜은 것이다.
그래서 고개를 갸웃하며 10GB로 value를 바꿔서 실행시켰다. 그런데 여전히 안 된다. 뭐지... 하고 또 살펴보니 한국(서울 리전)은 SSD Block Storage를 지원하지 않는다. (???)
결국 울며 겨자먹기로 40GB HDD Block Storage로 설정했다.
처음 사용하면 Resource Limit에 쉽게 걸린다.
제일 처음 Vultr 계정을 생성하면 인스턴스는 5대, 블록 스토리지 + 로드 밸런서를 합쳐서 최대 10개까지만 만들 수 있도록 되어 있다. 그래서 Resource Limit이 다소 적은 편인데, 이건 Billing 탭의 Limits 항목에 들어가면 추가를 요청할 수 있다.
Request Limit Increase 버튼을 누르면 계정 정보를 입력하고, 어떤 서비스를 돌리는지, 왜 Limit 상향이 필요한지, 얼마까지 상향을 요청하는지 적을 수 있는 칸이 나온다. 여기에 영어로 작성해서 요청하면 된다. Vultr는 한국어로 고객 지원을 하지 않기 때문에... 무조건 영어로 작성해야만 처리된다.
Limit 관련 상향 요청은 미동부 기준 영업시간에만 이뤄지고, 따라서 주말 등에 상향이 필요하면 진행이 안 될 수 있다. 나의 경우는 처음에는 다소 까다롭게 어떤 용도인지 물어봤는데, 세부 서비스 링크까지 제공하면서 설명을 해야 한도를 풀어주었다. 그런데 첫 번째 이후부터는 그렇게 빡빡하게 한도 상향 심사는 하지 않는 것 같다. Service Quota로 목을 조르는 GCP 케이스(...)를 생각하다보면 Vultr의 Limit은 다소 널널하게 느껴지는 것 같다.
총평
실제 사용한지는 아직 두 달이 채 되지 않았다. 그러나 현재까지의 경험은 '매우 만족'에 가깝다.
이전에 개인 쿠버네티스 클러스터로 EKS를 사용하다 비용 문제로 접었고, GKE 역시 비용 문제와 EKS와의 미묘한 차이로 인해 러닝커브를 극복하지 못하고 접었다. 그러나 VKE는 그 사이에 쿠버네티스 숙련도가 높아져서 그럴 수도 있겠으나, 정말 쉽게 다가갔고 쉽게 사용할 수 있었다. 그리고 저렴한 비용으로 다양한 시도를 할 수 있게 되었다! 덕분에 기존에 EC2 기반으로 운영하던 개인 프로젝트들을 모두 VKE 클러스터로 이전했다.
VKE는 크게 세 가지 케이스에 사용을 추천해보고 싶다.
- 소규모 스타트업 : 개발조직이 5인 이하의 소규모로 구성되어 있는데 쿠버네티스를 도입해야 한다면 VKE를 강력 추천한다. 비용 자체도 매우 저렴하고 관리 공수도 적게 들어서 초기에 빠르게 MVP를 만들고 스케일업 해나가는데 아주 좋다고 생각된다. 그리고 이쪽은 어차피 규모가 커지고 사용자가 많아지면 EKS같은 서비스로 옮겨갈 것이기 때문에 쿠버네티스 환경의 Best Practice대로만 설계하고 운영하면 이전도 그리 어렵지 않을 것이다.
- 개인 사이드 프로젝트 운영 : 개인용으로 사이드 프로젝트를 만들어서 올리거나, 소규모지만 그래도 꾸준히 수요가 있는 서비스의 경우 VKE 사용을 추천한다. 이건 다른 대체재들이 많아서 강력 추천은 못 하겠지만, 개인 프로젝트를 올리면서 "쿠버네티스도 경험해보고 싶다면" VKE를 써보는게 어떨까? 입문 용도로는 제격일 것 같다.
- 관리형 쿠버네티스를 경험해보고 싶은 입문자 : k3s나 미니큐브같은 서비스만 이용해보던 쿠버네티스 입문자들의 경우 EKS나 GKE같은 메이저 3사의 서비스를 사용하기엔 비용 부담이 많이 들 것이다. 그렇다면 중간중간에 조금 다른 부분들은 있지만 그래도 Managed 서비스인 VKE를 사용해보면 어떨까?
아주 만족하며 쓰고 있는 VKE 서비스. 다음 번에는 VKE 클러스터의 Managed Upgrade (v1.26 -> v1.27) 과정에서 겪은 재미난(?) 경험을 다뤄보겠다.
'DevOps' 카테고리의 다른 글
해커톤에서 10분에 한 번 배포하기 (해커톤을 위한 DevOps) (0) | 2023.09.30 |
---|