본문 바로가기

POST/Insight

쿠버네티스 비용 관리에 대해 반드시 알아야할 6가지

 

쿠버네티스는 모범 관행이 잘 지켜져서 빌드 될 경우, 컨테이너화된 애플리케이션을 빠르고 효율적으로 배포하고 확장할 수 있게 해 주며 안정성, 비용 효율성, 보안 측면이 강화됩니다. 프로덕션 환경으로 배포가 늘어나면서 많은 조직은 쿠버네티스 비용이 함께 증가하는 것을 경험하고 있지만 현실적으로 어떻게 비용 분석을 하고 관리해야 하는지에 대해서는 아직 어려움이 많습니다. 

 

쿠버네티스 비용과 비용 배분을 진정으로 이해하려면 주요 비용 발생 영역을 정확히 파악하고 있어야 합니다. 클라우드 비용에 대해서는 대부분 인지하고 있지만, 클라우드 플랫폼의 종류나 매니지드 쿠버네티스 서비스 사용의 유무, 컨설팅 서비스 등 외부적 요인도 고려해야 합니다. 쿠버네티스를 위한 오픈소스와 상용 툴을 통해 리소스 관리, 정책 자동적용, 모니터링과 얼럿 등 효율을 강화할 수 있지만 이런 툴 사용비, 트러블 슈팅 비용, 관리 비용도 모두 쿠버네티스 환경 비용으로 고려되어야 합니다. 

 

또한, 직접 비용(클라우드와 관련된 비용)과 간접 비용(보안, 개발자 엔지니어 교육, 통합 유지보수 비용 등)도 함께 고려해야할 요소들입니다. 

 

쿠버네티스 비용 이해하기

1. 클라우드 비용

 

클라우드 비용 산정은 생각보다 까다롭습니다. 단순히 클라우드 컴퓨팅 비용 뿐만 아니라, 클라우드 리소스인 스토리지, 네트워킹, 클라우드 서비스 비용 즉, 매니지드 데이터베이스, 머신러닝 서비스, 앱 호스팅 비용 등 모두 포함되어 있기 때문입니다.

 

클라우드 비용에 영향을 주는 몇가지 요인은 다음과 같습니다: 

  • 조직의 워크로드 크기와 복잡도 
  • 사용 중인 클라우드 서비스의 종류
  • 클라우드 제공업체의 가격정책
  • 워크로드를 배포한 리전의 위치

그 외에도 일반적인 컴퓨팅 인스턴스나, Managed services (EKS 등) 를 잘 활용하여 확장성, 유연성, 운영 편리성을 증대하고, 운영비용, 인프라 오버헤드 절감도 가능하지만, 반면 주의깊게 모니터링 하지 않으면 비용이 치솟을 우려도 있습니다. 

 

2. 온프레미스 비용

 

쿠버네티스를 클라우드에 배포하는 경우가 아닌 온프레미스에 배포를 하는 경우에도 비용이 발생합니다. 즉, 인프라에 대한 선 투자가 필요하며, 대략적으로 서버, 스토리지, 네트워크 신설/증설 비용을 고려해야 합니다. 또, 데이터 센터 유지비용 (Facility overhead) 으로 냉난방, 전력 유지, 하드웨어 유지보수, 물리적 보안 설비 등 설비비용도 발생하며, 이또한 쿠버네티스의 비용으로 간주되어야 합니다. 온프레미스 환경의 경우, 빠른 확장이 어려울수 있어 서비스 운영에 병목현상이 발생 가능성 있고, 장비의 확장 어려움, under-provisioning 에 대한 리스크도 고려해 보아야 합니다. 

 

3. 스토리지 및 네트워킹 

 

스토리지의 경우 일정 볼륨의 스토리지 초기 셋팅 후, 애플리케이션 확장에 따른 추가 증설 필요하기 때문에 이를 고려해야 합니다. 또한, 백업, 재해복구, 데이터 보호를 위한 스토리지 비용도 함께 고려해야 합니다.

 

쿠버네티스 역시 안정적인 네트워크를 필요로 하며, 서비스 발견, 로드 발란싱, 포드간 통신에서 중요한 요소입니다. 네트워크의 유지보수 비용 뿐만 아니라 클러스터 내부와 외부 통신을 위한 Bandwidth 비용도 고려해야 합니다. 

 

4. 컨테이너 컴퓨팅 리소스

 

컨테이너를 통해 구동되는 앱이 확장되면 쿠버네티스 클러스터, CPU, 메머리, GPU 등의 자원의 사용량이 급격히 증가할 수 있습니다. 잘못된 설정이나 최적화가 이뤄지지 않을 경우 오버 프로비져닝을 통한 비용 증가가 발생할 수 있습니다. 

 

5. 소프트웨어 라이센스, 벤더 서포트 및 매니지드 서비스

 

쿠버네티스 비용에는 소프트웨어 라이센스, 벤더 서포트, 매니지드 서비스 비용도 포함되어 있습니다. 이런 비용은 적절하게 사용할 경우 내부에 부족한 전문성을 지원받을 수 있는 방법이기도 합니다. 

 

6. 내부 플랫폼 엔지니어링 및 개발 팀

 

쿠버네티스 비용 산정시, 내부의 플랫폼 엔지니어링팀과 개발팀도 함께 고려해야 합니다. 쿠버네티스의 배포, 유지보수, 클러스터 확장은 모두 조직의 역량과 전문성을 필요로 합니다. 전문성과 역량을 기르기 위한 비용도 고려되어야 하며, 장기적으로 잘 관리되는 쿠버네티스 환경은 결과적으로 운영 효율성이 증가되어 비용을 절감하는 효과를 가져옵니다. 

 

 

쿠버네티스 비용 관리시 고려할 점

오토스케일링

 

워크로드에 맞도록 쿠버네티스 클러스터 사이즈를 잘 설정하는 것(rightsizing)은 결과적으로 비용 최적화를 통해 낭비되는 비용을 줄여줍니다. 또한 잉여 자원에 대한 불필요한 비용 지불을 감소시켜 줍니다. 

 

쿠버네티스는 몇가지 스케일링 기술을 제공하며, 다음과 같습니다:

  • Vertical Pod Autoscaler (VPA) : 애플리케이션 메트릭에 따라 리소스 확장
  • Horizontal Pod Autoscaler (HPA) : 지정된 레플리카에 맞춰 워크로드 조정
  • Cluster Autoscaler (CA) : 리소스 활요에 따라 클러스터의 노드를 자동 추가 또는 삭제

스팟 인스턴스 

 

클라우드 제공기업은 할인된 가격의 스팟 인스턴스를 제공하며 (대부분 온디맨드 가격의 최대 90% 할인된 가격) 적절한 활용을 통해 클라우드 컴퓨팅 비용을 절감할 수 있습니다. 염두에 두어야 할 점은 스팟 인스턴스는 스테이트풀 워크로드 보다는 Fault-tolerant 또는 인스턴스 종류에 유연한 앱에 적절하다는 점입니다. 만약, 스테이트풀 워크로드에 스팟 인스턴스를 사용할 계획이라면 CIS(Conatiner Storage Interface)를 검토해 보아야 합니다. 

 

리소스 요청 및 제한 설정

 

Goldilocks 와 같은 툴을 사용해서 네임스페이스별로 배포된 워크로드의 VPA 설정하여 최초에 리소스 요청 및 용량 제한 설정을 해야 합니다. 

 

인프라 최적화

 

리소스 요청과 제한을 적절히 설정하는 것 외에, 적절한 인스턴스를 사용해야 합니다. 스팟 인스턴스 외에도 모든 클라우드 제공업체는 다양한 버추얼 머신과 인스턴스를 제공합니다. 

  • GCP provides:
    • E2-series: Efficient and cost-effective, suitable for workloads that don't use the full CPU often.
    • N2-series: General-purpose instances offering a balance of compute and memory.
  • Azure provides:
    • B-series: Burstable instances, ideal for workloads that do not need continuous CPU performance.
    • D-series: General-purpose instances with a balanced CPU-to-memory ratio.
  • IBM Cloud provides Virtual Servers, such as:
    • Balanced Profile: A balanced CPU-to-RAM ratio, suitable for general-purpose workloads.
  • Oracle Cloud Infrastructure (OCI) provides:
    • VM.Standard.E2.1: A flexible and cost-effective instance for a variety of workloads.

앱의 특정한 요구사항이나 업무의 성격에 맞춰 인스턴스를 설정하여 비용 효율성과 성능을 최적화 할 수 있습니다. 그외에도 클라우드 서비스 제공업체의 가격정책, 리전의 선택 등을 통해 비용을 절감할 수 있으며, 적절한 스토리지의 선택 역시 쿠버네티스의 전반적인 비용 효율화에 도움을 줍니다. 

 

이그레스, 인그레스 비용 모니터링

 

멀티 클러스터 쿠버네티스의 마이크로서비스가 여러 리전과 available zone 간의 통신을 요구할 경우, ingress/egress 비용을 고려해야합니다. 대부분 클라우드 벤더는 클라우드 egress 비용을 책정합니다. 즉, 네트워크 외부로 나가는 데이터의 볼륨에 따른 비용이 책정되며, 이그레스와 인그레스 비용을 살펴볼때 확인할 몇가지 주의사항은 다음과 같습니다. 

  • 쿠버네티스 클러스터 혹은 클라우드 외부의 서비스와 통신할 경우 
  • 로그, 메트릭 등의 데이터를 쿠버네티스 클러스터의 외부 시스템이나 서드파티 서비스로 전송할 경우
  • 쿠버네티스 노드가 외부 레지스트리에서 컨테이너 이미지를 호출할 경우 (동일한 클라우드가 아닐 경우) 
  • 클러스터의 데이터를 외부로 백업 하는 경우
  • 멀티 클라우드, 온프렘과 클라우드 간의 데이터 이관이 발생할 경우
  • 쿠버네티스 상의 애플리케이션이 쿠버네티스 클라우드 제공업체의 외부 데이터베이스나 스토리지에 접근할 경우

로그 증가 모니터링

 

쿠버네티스는 pod, nodes, services 외에도 API 서버 호출 등 다양한 레벨에서 로그를 생성합니다. 따라서 쿠버네티스 클러스터가 증가하면 로그 데이터도 기하급수적으로 증가하게 되며, 생성된 로그를 장기보관 하게 될 경우 로그 저장 스토리지 비용도 함께 증가하게 됩니다. 

 

비용 가시성 및 쿠버네티스 비용 모니터링

 

쿠버네티스는 특성상 워크로드가 여러 노드와 서비스에 걸쳐 오케스트레이션 되기 때문에 비용에 대한 가시성 확보가 어렵습니다. 또한 추상화된 쿠버네티스 역시 앱 또는 서비스 운영에 드는 직접 비용을 확인하는 것은 어렵습니다. 지속적인 쿠버네티스 비용 모니터링을 통해 네임스페이스, 배포, pods, 개별 컨테이너 단위로 비용 분석이 가능하며, 세부 요소별로 비용 모니터링을 통해 클러스터 리소스의 활용율을 확인하고 효율적인 비용 배정이 가능합니다. 

 

 

 

쿠버네티스 비용에 대한 관리를 즉시 시작해야 합니다!

 

CNCF 에서 발간한 보고서에 따르면 비용에 대하여 민감한 조직에서 조차도 쿠버네티스 비용에 대한 모니터링을 제대로 하지 못하고 있다고 조사되었습니다. 보고서는 대부분의 조직에서 쿠버네티스 환경에서 클러스터, 네임스페이스, 워크로드 중 어디에 비용이 사용되는지에 대한 가시성이 매우 낮다는 점이었습니다. 그리고 68%의 기업이 비용은 증가하고 있다고 응답했습니다.

 

Fairwinds Insight 와 같은 툴을 통해 쿠버네티스 전반에 대한 비용을 더 잘 이해하고 리소스를 효율적으로 운영할 수 있습니다. 단순히 비용 절감뿐만 아니라 비용 관리 정책을 강제하고 관리하는 등 비용 관리 체계를 강화하여 안정적인 서비스를 제공할 수 있게 됩니다. 

 

 

 

참고문헌:

Top 6 Things to Know about Kubernetes Spending (and How to Manage It)

Announcing Fairwinds' Extended Support for Kubernetes Cost Rightsizing

4 ways to improve long term Kubernetes capacity and cloud costs in Kubernetes

FinOps for Kubernetes: Insufficient – or nonexistent – Kubernetes cost monitoring is causing overspend