Search

VKE(Vultr Kubernetes Engine) 사용하기 (1) - 비용과 클러스터 생성

쿠버네티스에 흥미가 생겨 공부하고, 이를 기반으로 업무를 한지 벌써 3년이 되어갑니다.
그동안 CKA, CKAD, CKS까지 모두 취득했고, 이젠 진짜 나만의 쿠버네티스 클러스터 가 있어야겠다고 생각이 들었습니다. 사실 이 생각은 한참 전부터 했는데, 발생하는 비용이 매번 돌아서게 만들었습니다.
개인용 클러스터를 운영하는 것은 부담이 없어야 한다는 것이 제 생각이었기에 비용이 가장 중요한 부분이었는데, 이번에 Vultr에서 제공하는 Kubernetes Engine을 접하게 됐습니다.
이 글에서는 개인적으로 쿠버네티스 엔진을 다루고 싶은 분들에게 강력히 추천하는 VKE(Vultr Kubernetes Engine)에 대해 소개하고 비용 측면에서 얼마나 경제적인지, 어떻게 생성하는지 작성하려고 합니다.

쿠버네티스 구축 방법

일반적으로 쿠버네티스 클러스터를 구축하는 방법은 크게 3가지로 볼 수 있습니다.
베어메탈 서버 구매 후 쿠버네티스 직접 설치
클라우드 벤더사에서 제공하는 서버에 쿠버네티스 직접 설치
EKS(AWS), AKS(Azure), GKE(GCP)등 관리형 쿠버네티스 사용
각 방법은 장단점이 있지만, 개인적으로 가장 구축하기 쉬운 것은 관리형 쿠버네티스를 돈주고 사용하는 방법입니다. 서버 구매부터 시작해서 쿠버네티스를 설치하고, Managing 하는데 필요한 모든 복잡한 요소를 돈으로 사버리는 것으로 생각하면 편합니다.
단점으로는 편한 대신 상대적으로 많은 돈이 매월, 매시간 발생한다는 점입니다.
사실 관리형 쿠버네티스를 구축하는 것은 크게 어려운 일이 아닌데, 매달 예상되는 비용을 보면 망설이게 되는 것이 가장 큰 난관이라고 개인적으로 생각합니다.
우리가 아주 잘 알고있는 클라우드 3대장이 제공하는 쿠버네티스 서비스 비용부터 간단히 살펴보겠습니다.
EKS(AWS), AKS(Azure), GKE(GCP) 모두 컨트롤 플레인에 대한 비용으로 시간당 0.10 USD를 청구합니다.
즉, 1개의 EKS 클러스터 당 기본 비용으로 매달 73.00 USD = 약 10만원 이 발생합니다.
1 클러스터 x 0.10 시간당 USD x 730 월별 시간 = 73.00 USD EKS 총 비용 (월별): 73.00 USD
Bash
복사
이게 1년으로 치면 약 120만원으로 무시할 수 없는 비용으로 다가옵니다.
게다가 위 비용은 단순 컨트롤 플레인 유지 비용이며, 사용하는 워커 노드 인스턴스 타입, 갯수만큼 비용이 추가됩니다. AWS EC2의 경우 t3.small 인스턴스를 2개를 워커노드를 사용한다고 가정하면 월별 37.96 USD 가 추가됩니다.
그러면 벌써 매달 100 USD넘는 비용이 고정으로 발생하는 것인데, 꽤 부담된다고 생각이 들기 시작합니다. 여기에 추가로 블록 스토리지 비용, 로드 밸런서 비용등이 더해진다고 생각하면… 더욱 마음이 아파집니다.

Vultr

클라우드 3대장의 무시무시한 월별 요금을 알지만 한 번 더 확인한 뒤, 쿠버네티스 서비스를 제공하는 다른 곳들도 둘러보기 시작했습니다.
가성비로 알려져 있는 DO(DigitalOcean), Linode… 그러던 중 Reddit에서 Vultr(https://www.vultr.com/)를 추천하는 글이 있어 살펴보게 됐습니다.
아마도 “벌쳐”라고 읽는 것 같고, 가성비 클라우드 컴퓨팅 서비스를 제공하는 업체인 것 같습니다.

VKE Free Control Plane!

다른 설명 필요 없이 쿠버네티스 탭을 살펴보다가 가슴이 두근거리는 문장을 확인했습니다. Vultr Kubernetes Engine(이하 VKE)의 Control Plane은 Free 입니다.
Unlike other Kubernetes services, VKE has no management fee.
Vultr Kubernetes Engine provides the control plane free of charge. In comparison, the Big Tech clouds typically charge at least $70 per month for the control plane in their managed Kubernetes services.
When using Vultr Kubernetes Engine, you only pay for underlying worker nodes, as well as associated resources, e.g. Block Storage and Load Balancers.
덕분에 클러스터를 만드는 것만으로도 매달 발생했을 73 USD 가 한 번에 해결되었습니다.
이제 우리가 신경쓸 것은 워커 노드에 사용될 인스턴스와 로드 밸런서, 블록 스토리지 비용을 신경쓰면 됩니다.
Vultr가 언제부터 이런 쿠버네티스 서비스를 시작했는지 찾아보니 22년 5월 11일 부터 24개 리전에 대해 Generally Available을 발표했습니다. (https://www.vultr.com/news/vultr-kubernetes-engine-is-now-generally-available/)
논외로, Linode에서 제공하는 쿠버네티스인 LKE도 컨트롤 플레인 비용이 무료입니다만, Vultr가 인스턴스 비용이 더 저렴한 편입니다.

VKE 워커 노드 비용

Vultr의 서버 인스턴스는 용도에 따라 다양하게 분포되어 있는데, 일반적인 용도의 서버 가격 리스트업은 다음과 같습니다.
지금까지 주로 AWS를 사용해왔는데, 위 서버 가격표를 봤을 때 가성비가 나쁘지 않다고 생각했습니다.
위 리스트에서 2 vCPU 4 GB를 예시로보면 시간당 0.030 USD 의 비용이 발생합니다.
AWS EC2 에서 비슷한 사양의 인스턴스로는 t3.medium 또는 t4g.medium 정도를 생각할 수 있는데, 서울 리전 기준 시간당 0.052 USD , 0.0416 USD로 가격이 책정되어 있습니다.
한 달 기준으로 비용을 비교하면 다음과 같습니다. (보통 한 달을 730 시간으로 계산하고 있기에 730시간으로 계산했습니다.)
AWS t3.medium
AWS t4g.medium
Vultr 2 vCPU 4GB
시간당 비용
0.052 USD
0.0416 USD
0.030 USD
월별 비용
0.052 * 730 = 37.960 USD
0.0416 * 730 = 30.368 USD
0.030 * 730 = 21.900 USD
일단은 AWS의 유사한 인스턴스들 보다 월별 비용이 저렴합니다. 여기에 80 GB SSD, 3 TB Bandwidth가 기본으로 딸려온다니, 더 이상 비교가 의미가 없는 수준이지만 제가 원하는 2개의 워커 노드로 구성된 클러스터의 기본 유지 비용을 계산해보겠습니다.

VKE 와 비용 단순 비교

위를 토대로 제가 원하는 2개의 워커 노드 (2 vCPU, 4 GB)로 구성된 쿠버네티스 클러스터에 들어가는 필수적인 비용을 비교하면 다음과 같습니다. (Azure, GCP의 경우 인스턴스 선택에 있어 비용 계산이 다른 부분이 있을 수 있음을 참고해주세요)
EKS (t4g.medium)
AKS (B2als v2)
GKE (n1-standard-1, 1 vCPU, 3.75 GB)
VKE (2 vCPU, 4 GB)
Control Plane
0.10 USD * 730 = 73.00 USD
0.10 USD * 730 = 73.00 USD
0.10 USD * 730 = 73.00 USD
0 USD
Worker Node (2 * 2 vCPU, 4 GB)
2 * 0.0416 * 730 = 60.736 USD
2 * 0.047 * 730 = 68.33 USD
2 * 31.17 USD = 62.34 USD
2 * 0.030 * 730 = 43.80 USD
월별 비용 합계
133.736 USD
141.33 USD
135.34 USD
43.80 USD
한 눈에 봐도 VKE의 가격 경쟁력을 확인할 수 있습니다.
한 달 5~6만원 정도면, 삼겹살에 소주 한 번 정도 참으면 나만의 쿠버네티스 클러스터를 유지할 수 있겠습니다.

기타 비용

Load Balancer 비용은 개당 10.00 USD/mo 로 고정입니다. 특별한 것이 아니면 ingress-controller를 위한 하나의 로드 밸런서면 충분하고, kubectl port-forward 로 접속할 수도 있으니 사용하지 않거나, 10달러의 비용이 매달 추가된다고 생각하면 됩니다.
Block Storage 비용은 HDD 타입은 1 USD / 40GB , NVMe는 1 USD / 10GB 인데 역시 특별히 사용하지 않는다면 발생하지 않습니다.

VKE 최종 비용

워커 노드: 2 * 2 vCPU / 4 GB
Load Balancer: 1 개 (ingress-controller 용)
매월 예상 비용: 53.80 USD
현재까지는 Load Balancer가 특별히 필요 없어서 당분간은 43.80 USD가 월 비용이 될 것 같습니다.

VKE 생성하기

VKE가 얼마나 가격 경쟁력이 있는지 알게되었으니, 이제 실제로 쿠버네티스 클러스터를 생성해보면서 살펴보겠습니다.
먼저 Vultr(https://www.vultr.com/)에 접속하여 회원가입을 합니다.
미리 말씀드리면 Vultr를 구글에 검색해보면 여러가지 Credit을 제공한다는 가입링크가 있는데, 그렇게 하지 않아도 별도로 Gift Code 페이지를 운영하고 있으니 안심하고 가입하신 뒤 Gift Code는 나중에 입력하셔도 됩니다.
Gift Code 정보가 있는 페이지는 https://www.vultr.com/coupons/ 를 참고하셔서 상황에 맞게 적용하면 됩니다.
Gift Code 입력 페이지는 Account - Make a Payment - Gift Code 탭으로 가면 있습니다.
저 같은 경우는 신규 가입자 전용 한 달 $250 크레딧을 받았습니다. 이게 가장 좋은 것 같아요.
가입하고 로그인하면 위 같은 화면을 마주하게 됩니다. 벌써부터 UI가 맘에 듭니다.
비용 지불을 위한 정보(Payment Method)와 Profile 작성을 마치고 Products - Kubernetes 항목으로 이동합니다. 위 같이 아무런 클러스터가 없는 상태겠죠?
Add Cluster 를 눌러 Cluster 생성을 시작합니다.
원하는 클러스터 이름, 쿠버네티스 버전, HA, Firewall 설정을 선택합니다. 저는 개인 개발용이다보니 HA는 선택하지 않았습니다.
클러스터의 로케이션을 선택합니다. 저는 Seoul을 선택했습니다.
이제 클러스터에 어떤 워커 노드를 사용할지 Node Pool을 결정합니다. 원하는 Label 명과 노드 수를 결정하고, 아래에서 TypePlan 을 선택합니다.
저는 Regular Cloud Compute 타입, $20/mo, 2 vCPU, 4 GB 노드 2개로 결정했습니다. 최하단에 월별 예상 비용이 표시됩니다. 제 경우는 $40.00/mo ($0.06/hr) 로 나타나고 있습니다.
이제 Deploy Now 버튼을 눌러봅니다.
네, 벌써 끝났습니다. 쿠버네티스 클러스터가 생성 중 입니다.
Kubernetes 탭을 눌러보면 클러스터가 생성 중이고, Compute 탭을 보면 워커 노드용으로 설정했던 2개의 인스턴스가 생성 중입니다.
비용도 비용이지만, Vultr의 UI가 어렵지 않게 구성되어 있고, 사용자가 민감한 비용도 직관적으로 제시되고 있어서 개인적으로는 참 맘에 들었습니다.
클러스터 생성이 완료되면 Installing 에서 Running 으로 상태가 변경됩니다.
생성된 클러스터를 눌러서 자세히 살펴보면 위처럼 클러스터 상태와 비용 정보 등 딱 필요한 정보만 한 눈에 들어오게 잘 구성되어 있습니다.
한 가지 VKE가 좋은 점은 바로 오른쪽 상단의 Download Configuration 버튼입니다.
무려 현재 클러스터에 바로 접속할 수 있는 kubeconfig.yaml 파일을 바로 제공해줍니다. 이 파일을 로컬의 .kube/config 파일에 작업할 수도 있지만, kubectl--kubeconfig=config파일명 을 통해 바로 사용할 수도 있습니다.
> kubectl cluster-info --kubeconfig vke-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.yaml Kubernetes control plane is running at https://xxxx.com:6443 CoreDNS is running at https://xxxx:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Bash
복사
다운 받은 config 파일로 kubectl get nodeskubectl get pods -A 명령어를 수행하면 다음과 같이 VKE가 잘 생성된 것을 확인할 수 있습니다.
> kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME np-global-17e836311f66 Ready <none> 2d10h v1.28.3 10.34.96.5 158.247.211.75 Debian GNU/Linux 11 (bullseye) 5.10.0-25-amd64 containerd://1.7.7 np-global-8bc2773c7271 Ready <none> 2d10h v1.28.3 10.34.96.4 158.247.201.220 Debian GNU/Linux 11 (bullseye) 5.10.0-25-amd64 containerd://1.7.7
Bash
복사
> kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system calico-kube-controllers-558d465845-rhc6f 1/1 Running 0 2d10h kube-system calico-node-dts67 1/1 Running 0 2d10h kube-system calico-node-smr2r 1/1 Running 0 2d10h kube-system cluster-autoscaler-65fd779bfb-ttd8m 1/1 Running 0 2d10h kube-system coredns-7bdbb56dfb-mg2ln 1/1 Running 0 2d10h kube-system csi-vultr-controller-0 4/4 Running 0 2d10h kube-system csi-vultr-node-jqt7g 2/2 Running 0 2d9h kube-system csi-vultr-node-wq6qf 2/2 Running 0 2d9h kube-system konnectivity-agent-dml24 1/1 Running 0 2d9h kube-system konnectivity-agent-fpbwp 1/1 Running 0 2d9h
Bash
복사

마치며

이번 포스트에서는 Vultr의 Kubernetes Engine인 VKE에 대해서 소개했습니다.
아직 클러스터를 생성한지 며칠 되지 않았지만, 개인적으로는 아주 만족하고 있습니다.
VKE는 무엇보다도 타 클라우드 업체에 비해 가성비가 좋다는 것, 그리고 초보도 쉽게 구성할 수 있도록 접근성이 좋은 것이 가장 큰 장점으로 생각합니다.
서두에서도 말씀드렸듯이, 개인용 쿠버네티스 클러스터를 만들기 위해 고민중이신 분들에게 VKE를 한 번 사용해보시기를 강력 추천 합니다!
다음 포스트에는 VKE에 Argo CD 를 배포하는 내용과 ingress-nginx-controller 를 설치하는 내용을 다뤄보겠습니다.