본문 바로가기
Kubernaetes

vcluster(virtualCluster) 사용해보기

by 앵남(Andy) 2023. 10. 3.

 

링크드인 쿠버네티스 관련글을 보다가 Virtual Cluster라는 글을 보게되었는데 내가 알고 있는 쿠버네티스 클러스터를 가지고 가상으로 만든다는건가? 신기하게 글을 읽어보다가 내가 직접 사용해보기로 했다. 

 

vcluster 무엇일까?  

vcluster는 host cluster 위에서 작동하는 kubernetes cluster라고 생각하면된다. vcluster는 host cluster namespace 안에 자신만의 control plane이 있고 schedule도 존재한다. 

 

vcluster Architecture

위 이미지는 vcluster 홈페이지에서 가져온 Architecture다. vcluster는  kubernetes가 작동하기 위한 중요한 components들을 가지고 있다. API server, controller manager, storage backend(etcd, mysql, etc)등등 

 

 

vcluster의 장점은 무엇일까?

vcluster에서 말하기로는 쿠버네티스 내에서는 한번에 여러버전의 operator를 같이 설치할 수 없지만 가상 클러스터를 사용하면 가상클러스터 내에 버전별로 설치를할 수 있다는 것이다. 

 

kubernetes의 controle plane API server, etcd, scheduler, controller는 쿠버네티스 클러스터의 모든 네임스페이스에 공유된다는 것 vcluster는 자체 데이터 저장소 리소스를 만들어서 관리하기 때문에 host cluster는 이러한 리소스에 대해 알 수 없다고 한다. 

 

 

테스트해보기

1. vcluster 설치 

curl -L -o vcluster "https://github.com/loft-sh/vcluster/releases/latest/download/vcluster-darwin-arm64" && sudo install -c -m 0755 vcluster /usr/local/bin && rm -f vcluster

vcluster --version

 

 

2. virtual cluster 생성하기

vcluster create my-vcluster

이렇게 vcluster를 통해 가상의 클러스터를 생성하게되면 호스트 클러스터 내에 하나의 네임스페이스가 생성되는데 그 네임스페이스가 격리된 클러스터라고 생각하면 된다. 해당 클러스터로 접근하기 위해서는 우리가 잘 알고 있는 방식대로 접근하면된다. 

 

3. vcluster 접근하기 

kubectx

kubectx를 사용하지 않는 분들은 따로 설치하셔야 합니다. kubectx명령어를 입력하면 내가 만든 가상의 클러스터가 만들어진게 보인다. 

 

해당 클러스터 내에 파드도 생성할 수 있고 진짜 클러스터처럼 사용할 수 있다는 이점이 있다. 그래서 현재 테스트 해보고 있는게 있는데 우리회사는 istio service mesh를 사용해서 클러스터를 운영중인데 메인클러스터 내에 있는 istio와 가상의 클러스터 내에 이스티오를 설치해서 사용하게 된다면 잘 되는지 궁금하다. 

 

메인클러스터에 생긴 네임스페이스 즉 격리된 클러스터 내에 만든 파드나 서비스들은 여기에 만들어 지게 되는데 그렇다면 메인클러스터에서 가상의 클러스터에서 만든 파드가 통신이 되는지 궁금했다. 

 

 

테스트 해본 결과 파드단 통신은 잘되는거 같다. 즉 호스트 클러스터에서 가상 클러스터 내에 있는 파드 통신은 문제가 없다. 

 

추후에는 이스티오에 대해서 테스트 해본 결과를 글로 작성해보겠다. 진짜 신기... 많은걸 할 수 있을거 같다.  

댓글