소개
vcluster는 loft-sh에서 개발한 오픈소스 도구로, 기존 Kubernetes 클러스터의 네임스페이스 안에서 완전한 기능을 갖춘 가상 클러스터(Tenant Cluster)를 실행할 수 있게 해줍니다. 각 가상 클러스터는 자체 API 서버, CRD, RBAC을 갖추며, 별도의 전체 클러스터를 새로 구축하는 것보다 비용이 낮고 멀티 테넌시와 격리를 강화할 수 있습니다. CNFC Certified Kubernetes 인증을 받은 배포판으로, 단독형 배포나 Docker 기반 실행 등 다양한 아키텍처를 지원합니다.
상세정보
테넌트별 전용 제어 평면
모든 테넌트 클러스터는 API 서버, 컨트롤러 매니저, 데이터 저장소로 구성된 전용 제어 평면을 운영하여, 네임스페이스 위에 규칙을 얹는 방식이 아닌 완전한 Kubernetes API 격리를 제공합니다.
강화된 테넌트 격리
테넌트는 자신의 클러스터 안에서 관리자 권한을 가지면서도 컨트롤 플레인 클러스터에는 최소한의 권한만 보유합니다.
GPU 인지 스케줄링
Dynamic Resource Allocation과 리소스 클레임, 디바이스 클래스, 인플레이스 파드 리사이징을 지원하여 GPU 워크로드에 대응합니다.
Auto Nodes 및 Karpenter 연동
Karpenter 기반으로 사설 노드를 자동 프로비저닝 및 해제하며, 노드 프로파일을 통해 풀별 구성을 적용할 수 있습니다.
단독형(Standalone) 배포
컨트롤 플레인 클러스터 없이 베어메탈이나 VM 위에서 완전한 Kubernetes 배포판을 자립 실행할 수 있습니다.
Docker 실행
vcluster create --driver docker 명령으로 Docker 컨테이너 안에서 완전한 테넌트 클러스터를 실행할 수 있습니다.
스냅샷과 복원
테넌트 클러스터를 S3, OCI, Azure Blob, 로컬 저장소에 스냅샷으로 보관하고 다른 위치에 복원할 수 있습니다.
리소스 양방향 동기화
Shared Nodes 및 Dedicated Nodes 모드에서는 Pod, Service, Secret, ConfigMap, CRD, Gateway API 객체 등 Kubernetes 리소스를 컨트롤 플레인 클러스터와 양방향으로 동기화합니다.
고가용성 및 통합
리더 선출과 함께 여러 복제본으로 고가용성을 구성할 수 있으며, 임베디드 etcd 또는 외부 데이터베이스를 지원합니다. cert-manager, external-secrets, KubeVirt, Istio, metrics-server 등과의 통합도 제공됩니다.
설치·시작·기본 사용
Windows에서는 winget을 통해 설치할 수 있습니다.
- 설치 명령:
winget install --id loft-sh.vcluster --exact - macOS/Linux에서는
brew install loft-sh/tap/vcluster로 설치할 수 있습니다. - 가상 클러스터 생성:
vcluster create my-vcluster --namespace team-x - 생성 후에는 일반 Kubernetes와 동일하게
kubectl get namespaces등으로 접근합니다.
Kubernetes 클러스터가 없는 환경에서는 Docker 드라이버를 사용해 vcluster create my-vcluster --driver docker 명령으로 로컬에서 테넌트 클러스터를 실행할 수 있습니다.
활용 예시
vcluster README가 설명하는 대표적인 활용 분야는 다음과 같습니다.
- AI 클라우드 제공업체가 GPU 고객에게 하이퍼스케일러 수준의 관리형 클러스터 경험을 제공하는 다중 테넌트 환경 구축
- 내부 GPU 플랫폼에서 팀별 셀프서비스 Kubernetes 환경을 운영하여 GPU 활용률을 높이는 용도
- 소버린 클라우드에서 데이터 주권과 테넌트 격리를 인프라 계층에서 보장하는 구성
- 베어메탈 Kubernetes 환경을 VM 없이 구성하여 격리를 유지하면서 가상화 오버헤드를 줄이는 구성
- 테넌트별로 분산 추론 스택을 분리하여 모델·고객 단위로 격리된 환경을 제공하는 구성
지원 환경·요구사항
- 운영체제: Windows(winget 패키지), macOS/Linux(Homebrew) 등
- 아키텍처: x64
- 런타임: Kubernetes 클러스터(컨트롤 플레인) 및 kubectl 사전 구성 필요
- 컨테이너 런타임: Docker(드라이버를 사용하는 경우)
버전·업데이트
- v0.36: Gateway API 동기화, 사설 노드용 노드 프로파일, 단독형 advertiseAddress 필드 추가
- v0.35: etcd v3 스냅샷 기능, 와일드카드 CRD 프록시, kine 메트릭, Kubernetes 1.36 지원
- v0.34: 멀티 리전 플랫폼, 단독형 스냅샷(S3/OCI/로컬), 템플릿 파라미터
- v0.33: 리프 인증서 자동 재생성, Azure Blob 스냅샷 대상, 워크로드 단위 sleep 어노테이션
- v0.32: Docker 드라이버, DRA, 인플레이스 파드 리사이징
- v0.27–v0.31: Private Nodes(v0.27), Auto Nodes(v0.28), Standalone(v0.29), vCluster VPN·Netris(v0.30), 스냅샷·교차 클러스터 API(v0.31)
제한·라이선스·확인사항
vcluster는 Apache 2.0 라이선스로 배포됩니다. Shared Nodes 및 Dedicated Nodes 모드에서는 컨트롤 플레인 클러스터의 CNI, CSI, 인그레스 등 플랫폼 스택을 재사용하기 때문에 리소스 동기화와 통합 기능이 동작하지만, Private Nodes와 Standalone 배포판은 자체 CNI, CSI, 플랫폼 구성 요소를 가져옵니다. AI 워크로드용 Auto Nodes 및 Standalone 기능을 사용하려면 컨트롤 플레인 클러스터나 베어메탈 자원이 별도로 필요합니다.
시스템 요구사항
Kubernetes 클러스터와 kubectl이 사전에 구성되어 있어야 합니다. winget 설치 명령은 Windows(x64) 환경에서 동작합니다.


