Hetzner에서 Kubernetes 사용으로 인프라 비용 75% 절감
(bilbof.com)Hetzner
- Hetzner로의 이전은 주로 비용 절감을 위한 것임. Hetzner의 가격은 세계적으로 경쟁력이 있음.
- Hetzner는 가상 머신과 베어 메탈 머신을 제공하며, AWS에 비해 제한적이지만 가격으로 보완함.
- Hetzner로 이전하면서 인프라 비용을 75% 이상 절감함.
Kubernetes on Hetzner
셀프 매니징 Kubernetes
- DigitalOcean에서 Kubernetes를 운영했으며, Hetzner에서도 셀프 매니징 방식으로 운영함.
- Hetzner는 관리형 Kubernetes 제어 플레인을 제공하지 않으므로 직접 관리해야 함.
- Terraform과 Puppet을 사용하여 노드를 관리하고 구성함.
노드 역할
- 노드 명명 규칙을 사용하여 클러스터 내 역할을 간단하게 유지함:
control-plane,worker,database. - 역할 추가는 간단하지만 자원 사용의 효율성을 저해할 수 있음.
노드 구축
- Terraform을 사용하여 클러스터를 부트스트랩함.
- Hetzner는 관리형 방화벽과 네트워킹을 제공하며, Terraform으로 쉽게 구성 가능함.
- 서버는 Terraform으로 완전히 관리되며, 역할별 모듈을 작성하여 서버 추가를 간단하게 함.
네트워킹
- Tailscale VPN을 사용하여 노드에 대한 관리 연결을 수행함.
- Tailscale은 NAT 홀 펀칭을 제공하여 포트를 닫아도 안전하게 연결 가능함.
- Hetzner의 관리형 방화벽과 Ubuntu의 UFW를 사용하여 포트를 차단함.
- Calico를 사용하여 컨테이너 네트워킹 인터페이스를 구성함.
스토리지
- Hetzner는 nVME SSD와 SSD 기반의 블록 스토리지를 제공함.
- Hetzner의 볼륨은 스냅샷 기능이 없으므로, 데이터 백업은 수동으로 수행해야 함.
- 데이터베이스 노드에서는 Local Persistence Volume Static Provisioner를 사용하여 로컬 볼륨을 사전 프로비저닝함.
백업
- Hetzner는 볼륨 백업을 제공하지 않지만 전체 서버 백업을 제공함.
- VMware의 Velero를 사용하여 네임스페이스와 PVC를 백업함.
- Postgres의 경우 pgBackRest를 사용함.
추가 기능
- SealedSecrets를 사용하여 비밀 관리.
- Node Exporter, Prometheus, Grafana, Loki를 사용하여 클러스터 모니터링.
- Alertmanager를 사용하여 Slack과의 알림 통합.
Hetzner에서 Kubernetes 운영에 대한 생각
- Hetzner로의 이전은 약 1주일이 소요되었으며, 추가 테스트 및 튜닝에 4주가 걸림.
- Hetzner의 가격은 합리적이며, 다른 제공업체에 비해 낮게 유지될 것이라 믿음.
- Hetzner의 IP 품질 문제와 고객 서비스에 대한 제한 사항이 있음.
- Hetzner는 빠르게 새로운 기능을 출시하지만, 수익성이 낮은 서비스는 빠르게 중단할 수 있음.
- 중앙 유럽 데이터센터 위치는 독일의 Falkenstein, Nuremberg, 핀란드의 Helsinki에 있음.
요약
- 이 전환은 원활하게 진행되었으며, 인프라 비용을 75% 이상 절감하고 클러스터의 컴퓨팅 자원을 두 배로 늘림.
- Hetzner는 비용 절감이 필요한 경우 매우 유리한 선택임.
- Hetzner의 오픈 소스 컨트롤러는 로드 밸런서 관리와 지속적인 볼륨 연결을 용이하게 함.
댓글과 토론
Hacker News 의견들
-
몇 년 동안 Hetzner의 전용 서버로 고객에게 Kubernetes 클러스터를 제공해 왔고, 성능은 확실히 뛰어나 보통 요청 시간이 절반 정도로 줄어듦
하드웨어가 저렴해서 고객마다 전담 DevOps 엔지니어링 시간도 제공할 수 있지만, 몇 가지 전제가 있음. 업데이트 테스트용 스테이징 클러스터는 사실상 필수이고, 프로덕션 업데이트를 일요일에 감으로 밀어붙이는 건 아무도 원치 않음. 애플리케이션 수준 복제가 가장 중요하고, 그다음이 블록 수준 복제이며 OpenEBS/Mayastor를 사용 중임. 여러 Postgres 오퍼레이터를 써본 뒤 현재는 StackGres가 가장 낫다고 봄
Ansible 플레이북은 자산이라, 특정 서비스에 대해 잘 정리하고 주석을 달아두면 나중에 같은 서비스를 다른 곳에 다시 배포하기 쉬워짐. 가능하다면 서버 연결용 전용 10G 네트워크를 추천함. 1G는 프로덕션 트래픽, 이미지 풀, 서비스 간 트래픽이 합쳐지면 부족하고, AWS 같은 가용 영역 내부 통신보다 지연 시간이 10배 개선됨
네트워크 이중화가 필요하면 1G 포트에 내부용 1G vSwitch(VLAN)를 만들고, 각 서버에 루프백 IP를 준 뒤 BGP로 라우트를 배포하면 됨(bird). MinIO 클러스터는 오퍼레이터를 통해 정석대로 운영하면 그리 어렵지 않고, 로컬의 고대역폭·저지연 객체 저장소를 제공함. 초기 투자에는 방해받지 않는 숙련 엔지니어링 시간이 2~4개월 정도 필요하고, HTTP 부하 분산 같은 보조적이고 귀찮은 작업은 여전히 CloudFlare 같은 클라우드 제공자에게 넘길 수 있음- “서버 연결용 전용 10G 네트워크”는 Hetzner에 별도로 요청해야 하는지 궁금함
공개 문서에 10G 업링크 옵션은 있지만 외부 네트워크용이고, 20TB 제한이 꽤 빡빡해 보임. 내부 클러스터 입출력이라면 20TB는 쉽게 문제가 될 수 있음 - 1G vSwitch, 루프백 IP, BGP(bird)로 네트워크 이중화를 구성하는 부분의 예시 설정을 공유할 수 있는지 궁금함
- 2~4개월의 초기 엔지니어링 투자가 필요하다면 https://syself.com도 살펴볼 만함
그 회사 직원이고, 몇 분 안에 프로덕션 준비가 된 클러스터를 제공하는 플랫폼을 만들었음 - 방해받지 않는 숙련 엔지니어링 시간 2~4개월이 회사나 고객에게 어느 정도 가치인지, 앞으로 5년간 더 높은 월 청구서를 내는 것과 비교해야 함
컨설팅 회사라면 그 작업을 팔고 싶겠지만, 고객 입장에서는 월 AWS 비용이 1만 달러쯤 예상되는 게 아니라면 전혀 가치 있어 보이지 않음. xkcd가 떠오름: https://xkcd.com/1319/
- “서버 연결용 전용 10G 네트워크”는 Hetzner에 별도로 요청해야 하는지 궁금함
-
Hetzner 전용 서버에서 Kubernetes 클러스터를 운영해 봤고, Aurora, S3, ECS Fargate 같은 완전 또는 고도 관리형 서비스도 다뤄봤음
경험상 Hetzner의 클라우드 청구서는 동등한 AWS 대비 20% 수준까지 낮아질 때도 있지만, 그 비용 이점에는 큰 절충이 따름
Hetzner Kubernetes에서는 NVMe 저장소 기반 Ceph 클러스터, MariaDB 오퍼레이터, 네트워킹용 Cilium, Helm 차트 배포용 ArgoCD를 관리했음. Kubernetes 클러스터 업데이트도 직접 처리해야 했고, 한 번은 전체 클러스터 장애까지 겪음. Kubernetes와 Ceph 양쪽에서 여러 버그를 만났고, 그중 다수는 GitHub 이슈와 Ceph 트래커에 기록되어 있었음. 관리하고 감시해야 할 작업 목록은 끝이 없었고, 워크로드 수와 환경 복잡도에 따라 이런 구성을 유지하는 일은 DevOps 팀의 풀타임 업무가 될 수 있음
반대로 AWS나 다른 주요 클라우드 제공자를 쓰면 훨씬 손을 덜 대는 구성이 가능함. 관리형 서비스를 쓰면 유지보수 노력이 크게 줄어 팀의 운영 부담도 낮아짐. 결국 AWS는 DevOps 업무량을 크게 줄여주고, Hetzner는 클라우드 청구서를 크게 낮춰줌. 어느 쪽이 더 비용 효율적인지는 총소유비용(TCO) 분석이 필요하며, Hetzner가 초기에 저렴해 보여도 추가 DevOps 시간이 절감분을 상쇄할 수 있음- 이건 꽤 ChatGPT 출력처럼 보이고, 이전 작성 기록에도 “X인 반면 Y도 Z를 한다. Y는 이미 X와 겹친다” 같은 문장이 많음
예시로 2 vCPU, 4GB 구성과 AWS의 비슷한 구성을 비교하면 AWS가 훨씬 비싼데, 비용 분석을 보고 싶음. 운영 부담을 줄이는 도구로 https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner도 있음 - 지원 이슈 재현용 장난감 개발 클러스터 말고는 Kubernetes 클러스터를 운영해 본 적이 없지만, 어느 날 인증서 문제로 깨졌음
근본 원인을 알아내기도 쉽지 않았고, 온라인에는 복구에 필요한 주문 같은 명령들이 많았지만 그냥 싹 지우고 클러스터를 다시 만들었음. 그 뒤로는 몇 주마다 그렇게 함. 실제 Kubernetes 운영자라면 인증서 자동 업그레이드와 그 밖의 여러 도구를 갖췄을 텐데, 회사라면 그런 운영자에게 비용을 내야 할 것 같음 - Ceph 운영은 정말 고생스러움. 비싸고 느리고 아직 제대로 준비된 느낌이 아님
쓰는 곳이 있다는 건 알지만, 성숙한 시스템인 Lustre나 GPFS와 비교하면 엄청난 시간 낭비가 됨. 차라리 작은 파일 시스템 여러 개를 NFS로 내보내고 블록 수준 복제를 보장하는 편이 낫음. 단일 주소 공간 파일 시스템은 편리하지만, 대규모에서 안정적으로 만들기 위한 관리 비용을 감당할 가치가 없는 경우가 많음. 데이터베이스 샤딩처럼 파일 시스템도 샤딩하고, Kubernetes에서 올바른 이미지에 올바른 저장소가 붙도록 매핑 로직을 쉽게 추가할 수 있음 - 대체로 동의하지만, OpenShift 같은 중간 해법을 자주 고려하지 않는 게 의외임
DevOps 부담을 훨씬 줄이면서 베어메탈의 성능과 유연성을 모두 얻을 수 있음. 완전 관리형 고가 서비스와 완전 직접 구축 사이의 훌륭한 하이브리드임. 비용이 꽤 있어서 스타트업에는 좋은 선택이 아닐 수 있지만, 72GB RAM 또는 36 CPU 이상, 대략 중간 크기 노드 9개 정도의 클러스터라면 OpenShift 같은 걸 반드시 고려해볼 만함 - Kubernetes 클러스터를 수동 업데이트하는 건 엄청난 절충임. 몇 푼 아끼려고 그렇게 하는 건 절박한 상황이 아니면 상상하기 어려움
- 이건 꽤 ChatGPT 출력처럼 보이고, 이전 작성 기록에도 “X인 반면 Y도 Z를 한다. Y는 이미 X와 겹친다” 같은 문장이 많음
-
Hetzner 볼륨이 프로덕션 데이터베이스에는 너무 느리다는 문제는 의외로 쉽게 해결 가능함. 아주 저렴한 Hetzner 베어메탈 장비를 노드로 쓰면 됨
NVMe 저장소가 있는 장비는 데이터베이스 성능이 훌륭하고 RAM도 넉넉한 경우가 많음. Kubernetes에서 데이터베이스를 돌리기보다, 마스터-복제본 구성용으로 튼튼한 베어메탈 장비를 두 대 이상 두는 편이 더 나을 정도임. 설정이 귀찮다면 Pigsty 같은 최신 패키지를 쓸 수 있음: https://pigsty.cc/- Kubernetes에서 로컬 NVMe 저장소를 쓰면서 데이터베이스를 운영하는 선택지도 많음
데이터베이스 파드를 특정 노드에 고정하고 LocalPathProvisioner를 쓰거나, JuiceFS, OpenEBS 같은 분산 솔루션을 쓰면 됨 - 베어메탈 서버의 로컬 저장소를 써서 좋은 경험이 있었음
고객을 위해 작성한 가이드는 여기 있음: https://syself.com/docs/hetzner/apalla/how-to-guides/storage/local-storage-in-baremetal
- Kubernetes에서 로컬 NVMe 저장소를 쓰면서 데이터베이스를 운영하는 선택지도 많음
-
10년 넘게 Hetzner를 만족스럽게 써왔고, 예전에는 독일 데이터센터의 전용 서버를 쓰다가 미국 지연 시간을 줄이려고 Cloud US VM으로 옮겼음
최근 넉넉했던 20TB 무료 트래픽이 3TB로 줄고 추가 TB당 €1.19가 된 건 조금 실망스럽지만, 평가해 본 다른 미국 클라우드 제공자들보다 여전히 훨씬 가성비가 좋아 보임
Kubernetes를 굳이 선택하진 않겠지만, 기존의 SSH/Docker Compose 배포를 GitHub Actions와 kamal-deploy.org로 옮겨 성공적으로 쓰고 있음. 설정이 쉽고 원격 배포 앱을 모니터링하는 UX 도구도 좋음: https://servicestack.net/posts/kamal-deployments- 미국 쪽 문제처럼 보이고, 아마 피어링 파트너가 가격 인상을 압박하는 것일 수 있음
독일 데이터센터는 아직 20TB 대역폭을 제공함: https://www.hetzner.com/cloud/
하지만 미국은 같은 가격에 한 자릿수 이상 적음
- 미국 쪽 문제처럼 보이고, 아마 피어링 파트너가 가격 인상을 압박하는 것일 수 있음
-
예전에는 돈을 아끼고 재미도 있어서 자동차 정비를 직접 했지만, 생각보다 복잡했고 시간이 지나며 여기저기 망가지거나 깨졌음
“다시 고치는” 데 시간을 많이 썼고, 몇 년간 공구에 수천 달러를 썼을 것임. 싼 공구가 부서지거나 빨리 녹슬어 교체한 비용도 있었고, 차가 종종 받침대 위에 올라가 있었음. 그래도 훌륭한 교훈을 많이 얻었는데, 가장 큰 교훈은 어떤 일은 직접 할 가치가 없다는 것임. 생계가 달린 일이라면 정비공에게 맡기거나 차를 리스하는 편이 낫음
오일 교환처럼 단순한 일도 직접 할 가치가 별로 없음. 오일 받이, 필터 렌치, 깔때기, 정비용 보드 같은 공구를 사고, 시간을 비우고, 더러운 작업복을 찾고, 가게에 가서 새 오일과 필터를 산 뒤 집에 와서 교환하고, 그날 또는 다른 날 폐오일을 받아주는 가게에 가야 함. 반면 정비소에서는 오일과 필터 비용보다 15달러쯤 더 내고 20분이면 끝남
Kubernetes는 자동차 한 대 전체이고, 그것도 복잡한 차임. 재미로 하는 게 아니라면 직접 유지보수할 가치가 정말 없음- 잘 모르겠음. 정비소에서는 브레이크 교체에 1800달러를 요구했지만, 부품을 300달러에 사서 처음인데도 하루 만에 끝냈음
꽤 괜찮은 보상이고 배워둘 만한 기술임. 이웃에게 자동차 리프트가 있어서 확실히 도움이 됨 - 모든 일에 AA를 부르고 매번 유명 정비소에 가는 비용이 예산의 큰 부분을 차지한다면 이야기가 달라짐
핵심은 직접 할 일과 외주 줄 일의 균형을 찾는 것이고, 여기서 말하는 것처럼 쉽거나 깔끔하지 않음 - 결국 두 가지에 달렸음. 지금과 앞으로 얼마나 관심과 동기가 있는지, 그리고 제3자 의존성이 장기적으로 얼마나 발목을 잡을 가능성이 있는지임
Kubernetes에 자주 관여하는 컨설턴트 관점에서는 초기 도움과 지속적인 도움 창구를 확보하되, 내부에서도 충분히 관심 있는 사람이 함께 배우는 편이 좋음
컨설턴트와 전문가는 초기에 나쁜 결정을 피하게 해주고 몇 달 동안 벽에 머리 박는 일을 줄여줄 수 있음. 핵심 사업에도 집중해야 하는 상황에서 기술이나 생태계의 흔한 어두운 구석과 함정을 합리적인 시간 안에 익히는 건 쉽지 않음. 도움은 받되, 물고기 잡는 법과 불 피우는 법도 배워야 함
- 잘 모르겠음. 정비소에서는 브레이크 교체에 1800달러를 요구했지만, 부품을 300달러에 사서 처음인데도 하루 만에 끝냈음
-
흥미로운 글이지만, 클러스터와 그 위에서 돌아가는 워크로드 설명이 빠진 느낌임
노드는 몇 개인지, 트래픽은 얼마나 받는지, 가동 시간과 지연 시간 요구사항은 무엇인지 궁금함. 그리고 절대 비용 절감액도 중요함. 월 10만 달러의 75% 절감과 월 100달러의 75% 절감은 완전히 다름- 경험상 GPU를 쓰거나 이미 월 10만 달러를 쓰는 경우가 아니면 아무도 신경 쓰지 않음
실제로 월 10만 달러가 분기점이라고 봄. 연 120만 달러임
정교한 베어메탈 배포를 제대로 지원하려면 엔지니어 급여로 연 40만 달러쯤 들고, 데이터센터 약정, 하드웨어 감가상각, 대역폭으로 대략 연 10만 달러가 듦. 이런 인력은 보통 그 일을 하면서도 비즈니스의 다른 부분에 큰 가치를 제공하므로 실제 비용은 더 낮을 수 있음. 그러면 연 70만 달러를 절감하니 훌륭하고, 동등한 클라우드 지출이 그보다 더 커질수록 이점은 훨씬 커짐
- 경험상 GPU를 쓰거나 이미 월 10만 달러를 쓰는 경우가 아니면 아무도 신경 쓰지 않음
-
10년 넘게 전 웹호스팅에서 일할 때는 나쁜 행위 때문에 Hetzner IP를 계속 블랙홀 처리하곤 했음
다른 저가 VM 제공자들도 마찬가지였고, 지리 데이터베이스와는 무관하게 순전히 행위 때문이었음. 싼 데에는 이유가 있음- 몇 년 전 Mailgun 무료 티어를 쓰려 했을 때 같은 문제가 있었음
제품 기능은 마음에 들었지만 무료 티어 IP의 평판이 끔찍했고, 특히 Hotmail이나 Yahoo에서 메일이 거의 받아들여지지 않았음. 무료 호스팅 서비스는 스패머와 사기꾼에게 압도당하고, 저가 서비스도 정도만 덜할 뿐 비슷함. 가격이 비쌀수록 사기와 스팸에 덜 쓰임 - 상황은 계속 변하지만, 요즘 내가 호스팅하는 사이트를 가장 많이 공격하는 플랫폼은 대형 클라우드 제공자들, 특히 Azure임
AWS, Google, DigitalOcean, Linode, Contabo 등도 로그인 무차별 대입과 흔한 취약점 탐색 공격을 많이 호스팅함 - AWS는 공개 IP가 차단 목록에 오르지 않도록 열심히 관리함
- 의미가 있다면 백엔드는 Hetzner에 둘 수 있음. 예를 들어 큐나 배치 처리기가 해당됨
- hcloud에서 k8s 저장소에 블랙리스트되지 않은 floating IP를 얻기까지 여러 개를 시도해야 했음
- 몇 년 전 Mailgun 무료 티어를 쓰려 했을 때 같은 문제가 있었음
-
회사 인프라 구축과 보안을 돕는 컨설팅 회사에서 일하고 있고, Hetzner 같은 저가 제공자, 지역 중간급 제공자, AWS/GCP/Azure 같은 상위 3개 클라우드에서 Kubernetes를 운영하는 고객이 많음
공공 클라우드에서 운영할 수 없거나 원치 않는 정부, 금융, 의료 회사도 있어 보통 온프레미스로 호스팅함
Hetzner에 한 달에 한 번 이슈나 결함이 있다면, 중간급 제공자는 2~3개월에 한 번, AWS 같은 곳은 5~6개월에 한 번 정도임. 다만 가격도 그 관찰과 비슷하게 움직이므로, 추가 장비와 백업, 장애 시나리오를 더하는 것이 더 나은 거래인지 사례별로 신중히 따져야 함
기본 호스팅 서비스를 쓰는 큰 장점은 가격 예측 가능성이 훨씬 높다는 점임. 장비 비용을 내고 필요한 만큼 확장하면 됨. AWS 같은 제공자의 부가 서비스에 묶이면 예상 밖의 큰 청구서를 받을 수 있고, 빠져나오기도 훨씬 어려워짐. 작은 회사라면 초기에 쉬운 해법이나 “무료 크레딧”에 혹해 장기 생존 능력을 위협하는 근시안적 결정을 하지 않는 게 좋음
여기에는 정답이 없고, 절충만 있음 -
직접 써보진 않았지만 https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner는 Hetzner에 Kubernetes를 설정하고 관리하는 방법으로 훌륭해 보임
지금은 Oracle 무료 티어를 쓰고 있지만, Oracle에서 벗어나기 위해 이쪽으로 옮길까 계속 생각 중임- 이걸로 클러스터 두 개를 운영 중이고, 하나는 프로덕션, 하나는 개발용임
꽤 잘 동작함. SuSE MicroOS에서 자동 보안 업데이트를 위해 매주 일요일 머신을 재부팅하는 일정도 둠. 워크로드 증가에 맞춰 머신 확장도 해봤음. Terraform이 하려는 모든 변경을 반드시 검토해야 하지만, 그렇게 하면 꽤 안전함
유일한 단점은 모든 노드가 방화벽 뒤에 있어도 공개 IP가 필요하다는 것인데, 이 부분은 작업 중임 - 이걸 써서 직접 쓰는 저널링 사이트용 클러스터를 구성했음
하룻밤 만에 클러스터가 동작했고 꽤 잘 작동함. 한 가지 작은 문제는 arm 노드에서 자동 업데이트가 실행되지 않았던 것인데, 그 시점에 단일 노드만 돌고 있었고 컨트롤 플레인 taint 때문에 업데이트 파드가 실행되지 못해 멈췄음 - Cluster API와 Cluster API Provider Hetzner도 사용 중임
https://github.com/syself/cluster-api-provider-hetzner
아주 안정적으로 동작함 - 최근 Oracle 무료 티어에서 k8s를 돌리는 글을 읽고 시도해보려 했음
옮기고 싶게 만드는 구체적인 불편함이 있는지 궁금함
- 이걸로 클러스터 두 개를 운영 중이고, 하나는 프로덕션, 하나는 개발용임
-
DigitalOcean이 다른 제공자처럼 무료 관리형 컨트롤 플레인을 제공하지만 관리형 클러스터 노드에 보통 100% 마크업이 붙는다는 말은 맞지 않는다고 봄
DigitalOcean에서는 워커 노드 비용이 일반 Droplet과 같고 추가 비용이 없음. 그래서 DigitalOcean의 제공 방식은 꽤 매력적임. 걱정할 필요 없는 무료 컨트롤 플레인, 무료 업그레이드, 부하 분산기와 저장소 같은 추가 통합이 있음. 직접 관리하는 것보다 이걸 선택하지 않을 이유가 잘 떠오르지 않음- 실제 노드는 여전히 DigitalOcean이 Hetzner보다 훨씬 비쌈. 그게 아마 주된 이유임
Hetzner의 8GB RAM 공유 CPU는 약 10달러이고, DigitalOcean의 동급은 48달러임 - czhu12가 말한 것 외에도, DOKS가 고가용성 컨트롤 플레인에 추가 요금을 부과하는 건 플랫폼이 프로덕션급이 아닌 것처럼 느껴지게 함
Hetzner에서 관리형 경험을 원한다면 https://syself.com를 살펴볼 수 있음. 해당 회사 직원임
- 실제 노드는 여전히 DigitalOcean이 Hetzner보다 훨씬 비쌈. 그게 아마 주된 이유임