본문 바로가기

POST/Tech

비용 효율적인 확장을 위한 쿠버네티스 가상화

Designed by Sophie

 

엔지니어들의 컨테이너 배포가 늘어나면서 쿠버네티스는 가장 많이 사용되는 관리 툴이 되었습니다. 그러나 멀티 쿠버네티스 클러스터를 관리함에 있어 비용 최적화는 매우 어려운 이슈 중에 하나입니다.

 

쿠버네티스를 가상화하여 사용하면 가능한 많은 클러스터를 사용하면서도 전체 리소스 비용을 최소화할 수 있습니다.

쿠버네티스 가상화란?

쿠버네티스 가상화란 호스트 클라우드에 1개 이상의 가상 클러스터를 생성하는 것을 의미합니다. 이를 통해 플랫폼 엔지니어링 팀 간에 고른 쿠버네티스 리소스 할당이 가능해집니다. 버추얼 클러스터는 컴퓨팅 비용을 절감하면서 운영 중인 클러스터의 독립성(isolate)을 강화하고 쿠버네티스의 확장을 더 효율적으로 가능하게 합니다.

 

버추얼 클러스터는 멀티 테넌시 환경을 가능하게 해 줌으로써 필요할 때 언제든지 엔지니어가 쿠버네티스에 대한 접근할 수 있게 해 줍니다.

 

쿠버네티스의 가상화를 통해 물리적으로 클러스터의 수를 감소하면서도 팀당 다수의 버추얼 클러스터 제공이 가능합니다. 쿠버네티스의 생산성을 향상하는 좋은 방법으로 볼 수 있습니다.

기존의 쿠버네티스 가상화 구현 방법

멀티 테넌시는 플랫폼 엔지니어링 팀에게 있어 항상 골칫거리였습니다. 아래는 대표적인 멀티 테넌시 구현 방법입니다.

 

  • 네임스페이스: 다수의 사용자에게 리소스를 공유하는 가장 네이티브 한 방법입니다. 단일 클러스터에 대한 독립(isolation)이 가능하지만 네임스페이스 오브젝트에만 적용이 되며, 클러스터 전체 오브젝트인 노드, persistentVolumes, StorageClass 등에는 접근할 수 없다는 단점이 있습니다.
  • 작은 단위의 클러스터: 쿠버네티스의 확장이 필요할 때, 많은 엔지니어가 사용하는 방법은 작은 규모의 클러스터를 많이 생성하는 것입니다. 이런 방식은 멀티 테넌트를 지원하고 테스트나 개발 환경과 같은 일회성 자원을 지원합니다. 그러나 많은 수의 클러스터 생성은 비용 효율적인 확장 방법은 아닙니다.
  • Loft vClusters: vCluster는 Loft사가 개발한 버추얼 클러스터 생성 툴로, 멀티 테넌시 쿠버네티스 관리 도구입니다. 사용자들은 vCluster를 통해 쿠버네티스 클러스터 내의 네임스페이스에 완전한 기능을 갖춘 클러스터를 생성할 수 있습니다. 로컬 및 온프레미스 클러스터, 벤더 매니지드 클러스터, certified 쿠버네티스 배포버전에도 구현이 가능합니다.

버추얼 쿠버네티스를 고려해야 하는 이유

버추얼 클러스터는 대부분의 리소스를 호스트 쿠버네티스 클러스터와 공유하면서 동시에 별도의 분리된 API 서버와 컨트롤러 매니저를 가지고 있습니다. 엔지니어는 버추얼 클러스터를 통해 CI/CD 파이프라인, 일회성 환경, 프로덕션 워크로드 등 모든 쿠버네티스 클러스터의 유즈 케이스에 활용할 수 있습니다.

 

  • 비용 절감: 쿠버네티스 비용을 절감하기 위한 노력은 어느 조직에서나 최우선 과제입니다. 쿠버네티스 가상화는 리소스의 효율적 이용이 가능하며, 추가적인 하드웨어의 수를 감소시키고 쿠버네티스 스케일링 과정을 자동화할 수 있는 아주 효과적인 방법입니다.
  • 유연성: 플랫폼 엔지니어링 팀은 쿠버네티스 가상화를 통해 변화하는 요구사항에 맞춰 새로운 리소스와 확장을 유연하게 지원 가능합니다. 이는 다양한 애플리케이션과 사용자 그룹의 필요에 더 쉽게 대응할 수 있습니다.
  • 보안: 멀티 테넌트 환경은 공유된 자원의 보안에 항상 신중해야 합니다. 특히 멀티 인스턴스를 운영중일 경우 클러스터를 고립시키는 것이 중요합니다. 쿠버네티스 가상화는 워크로드 간의 고립이 더 잘 적용되고 리소스에 대한 액세스 관리도 더 잘 되어 있기 때문에 보안상으로도 더 안전합니다.
  • 확장성: 쿠버네티스 가상화는 개발, 테스트, 프로덕션 환경에 필요한 버추얼 클러스터를 생성할 수 있으며, 클러스터를 쉽게 스케일 업/다운할 수 있습니다.
  • 관리의 간소화: vCluster를 통해 쿠버네티스 가상화하여 사용하면 전반적인 관리도 간소화할 수 있습니다. 담당자는 모든 네임스페이스와 버추얼 클러스터의 관리를 단일화할 수 있습니다. 단일화된 관리를 통해 모니터링, 클러스터 리소스 관리, 애플리케이션 배포 및 발생 가능한 이슈의 트러블슈팅을 조금 더 쉽게 해결할 수 있도록 지원합니다.
  • 성능 개선: 불필요하게 쿠버네티스 클러스터를 생성할 필요가 없으며, 이를 관리하기 위한 비효율적인 가상화 솔루션으로 시간과 노력을 낭비할 필요가 없습니다. 이는 결과적으로 오버헤드 비용을 절감하면서 성능은 개선하게 됩니다.
  • 클라우드 네이티브 애플리케이션: 쿠버네티스 가상화는 속도, 효율성 및 인프라의 확장을 요구하는 클라우드 네이티브 애플리케이션에 매우 적절합니다. 오늘날 요구되는 빠르고 역동적인 비즈니스 환경을 지원할 수 있는 방법입니다.

가상화된 쿠버네티스 클러스터의 관리 방법

플랫폼 엔지니어링 팀에게 멀티 네임스페이스나 작은 클러스터를 통한 관리는 비용 효율적이지 않습니다. 반면 버추얼 클러스터를 활용하면 더 나은 독립(고립)된 환경을 저렴한 비용으로 제공할 수 있고, 엔지니어에게 버추얼 클러스터에 대한 완전한 어드민 접근을 부여할 수 있습니다. 물론, 쿠버네티스 가상화를 할 때 주의해야 할 사항도 있습니다. 이제 주의사항에 대해 살펴보겠습니다.

 

  • 모니터링 및 알림: 버추얼 클러스터의 수가 늘어나면 효율적으로 모니터링과 관리하는 것은 점점 어려워집니다. 담당팀은 강력한 모니터링과 알림 시스템을 구축하여 빠른 이슈 파악과 해결을 지원해야 합니다.
  • 보안: 쿠버네티스 가상화는 추가적인 공격 벡터를 생성하기 때문에 플랫폼이 보안 위협에 대해 취약해질 수 있습니다. 플랫폼 엔지니어링 팀은 RBAC, 네트워크 분리, 암호화 등 엄격한 보안 정책을 통해 보안을 강화해야 합니다.
  • 자동화: 멀티 테넌시 환경은 전반적으로 더 많은 리소스 관리를 필요로 합니다. 대규모의 쿠버네티스를 배포하여 운영할 경우 자동화에 대해서 심각하게 고민해야 합니다. 자동화 툴을 통한 클러스터 프로비저닝, 배포 및 스케일링 관리를 간소화해야 합니다.
  • 리소스 할당: 버추얼 클러스터의 수가 증가하면 리소스의 할당이 더욱 중요해집니다. 너무 많은 리소스의 할당은 비용 절감이라는 가상화의 기본적인 목표와 어긋납니다. 각 버추얼 클러스터가 필요한 적절한 리소스를 배정받도록 플랫폼 엔지니어링 팀은 항상 주의해야 합니다.
  • 재해복구: 재해나 장애는 불가항력이지만 담당팀은 강력한 재해복구 계획을 준비해 두어야 합니다. 단순한 백업과 복구 과정 외에 failover 메커니즘도 함께 고민되어야 합니다.
  • 클러스터 스프롤: 클러스터 스프롤은 너무 많은 쿠버네티스 클러스터로 인해 관리나 자원 최적화의 어려움이 발생합니다. 쿠버네티스 클러스터 가상화는 멀티 테넌트를 통해 동일한 물리 인프라를 공유하여 클러스터의 수를 감소시겨 클러스터 스프롤을 막는 효과가 있습니다. 또, 가상화 레이어는 클러스터 관리를 간소화하고 멀티 테넌트간의 리소스 할당을 개선합니다.

결론

쿠버네티스 가상화는 여러 개의 네임스페이스나 작은 단위의 클러스터를 생성하여 구현할 수 있습니다. 그러나 버추얼 클러스터는 API 서버, 컨트롤 플레인, 스토리지를 가지고 있기 때문에 리소스를 유지 관리하거나 확장하기 훨씬 용이합니다.

 

플랫폼 엔지니어링 팀은 버추얼 클러스터를 모든 쿠버네티스 플랫폼에 구현할 수 있습니다. 포드나 서비스 같은 매우 적은 자원만이 호스트와 버추얼 클러스터 간에 공유되며, 이는 버추얼 클러스터의 고립을 보장하며 서로의 간섭을 막아줍니다.

 

특히, 유연성, 확장성, 비용 최적화, 클라우드 네티이브 애플리케이션 등 쿠버네티스 가상화는 많은 장점이 있습니다. 물론, 담당팀은 가상화된 쿠버네티스가 잘 관리되도록 적절한 툴을 활용하고 지속적으로 관리해야 합니다.

 

 

원문: Virtualizing Kubernetes for Cost-effective Scale