피드로 돌아가기
Day 1: Introduction to vind: Why I Replaced KinD with vCluster in Docker [vind]
Dev.toDev.to
DevOps

Day 1: Introduction to vind: Why I Replaced KinD with vCluster in Docker [vind]

Loft가 vind(vCluster in Docker)를 개발해 KinD의 LoadBalancer 미지원, sleep/wake 부재, UI 부재, 외부 노드 미연결, 수동 이미지 로딩 등 5가지 한계를 해결

vCluster2026년 3월 24일8intermediate

Context

KinD(Kubernetes in Docker)는 로컬 개발 및 CI 파이프라인에서 광범위하게 사용되었으나, LoadBalancer 서비스 미지원, 클러스터 일시 중지 기능 부재, CLI 전용 인터페이스, 로컬 전용 구조로 인한 외부 노드 연결 불가, Docker 이미지 수동 로딩 등의 제약이 있었다. 이러한 제약들은 프로덕션 환경과 유사한 로컬 테스트를 어렵게 만들었다.

Technical Solution

  • LoadBalancer 서비스 지원: HAProxy 로드 밸런서를 Docker 컨테이너로 실행하여 로컬 클러스터에서 LoadBalancer 타입 서비스를 기본 지원
  • 클러스터 상태 관리: vind는 클러스터를 일시 중지(pause)했다가 나중에 재개(resume)할 수 있는 sleep/wake 기능 제공
  • 시각적 관리 인터페이스: 무료 vCluster Platform UI를 제공하여 CLI 기반의 KinD와 달리 시각적 클러스터 관리 지원
  • 외부 노드 통합: Tailscale VPN 기반으로 GCP, AWS 등 클라우드 VM을 워커 노드로 연결 가능
  • 이미지 캐시 자동 공유: 호스트 Docker 데몬의 containerd 저장소에 연결된 레지스트리 프록시로 이미지 캐시 자동 공유
  • 아키텍처 구성: vind 클러스터는 제어 플레인 컨테이너(API 서버, etcd, 스케줄러, Flannel CNI), 선택적 워커 노드 컨테이너(kubelet, kube-proxy), Docker 네트워크, HAProxy 로드 밸런서, 레지스트리 프록시로 구성

Key Takeaway

vind는 Docker 컨테이너 내부에서 표준 Docker 명령어로 검사 및 관리 가능한 개별 컴포넌트를 실행함으로써 로컬 Kubernetes 환경의 프로덕션 유사성을 높였다. KinD의 기본 단계적 개선보다는 별도의 지원 도구(MetalLB, 수동 이미지 로딩) 필요성을 제거하여 개발자 경험을 중앙화했다.


로컬 Kubernetes 개발 환경을 구성하는 엔지니어는 vind를 사용하여 KinD 대비 추가 구성 없이 LoadBalancer 서비스 직접 테스트, 클러스터 일시 중지로 리소스 절감, Tailscale VPN을 통해 클라우드 리소스와 하이브리드 테스트를 수행할 수 있다.

원문 읽기