Kubernetes는 이미 클라우드 환경의 표준으로 자리잡았고, 많은 기업과 팀에서 직접 서버에 Kubernetes 클러스터를 구죽하거나 관리형 Kubernetes 서비스를 이용하고 있습니다.
그래서 많은 분들이 Kubernetes와 클라우드 네이티브 툴에 관심을 가지고 계시지만, 여전히 진입장벽은 높은 편인데요.
가장 큰 이유 중 하나는, Kubernetes 환경을 구축하려면 별도의 서버에 Kubernetes를 직접 설치하거나 유료로 제공되는 관리형 Kubernetes 서비스를 이용해야 하기 때문입니다.
Kubernetes를 경험하고 싶거나 로컬에서 가볍게 테스트하고 싶은 분들에겐 부담이 될 수밖에 없죠.
이런 문제를 해결하기 위해 다양한 툴이 등장했는데요. 그 중에서도 제가 이번에 소개할 툴은 바로, minikube입니다.
👍minikube가 Kubernetes 실습 및 테스트에 탁월한 이유
minikube는 개발자의 로컬 PC에서 한 개 또는 여러 개의 노드로 구성된 Kubernetes 클러스터를 빠르고 쉽게 설치할 수 있도록 도와주는 툴입니다.
이미 비슷한 역할을 하는 툴이 여럿 존재합니다. 그치만 제가 Kubernetes 실습과 테스트에 minikube를 추천하는 이유는 무엇일까요?
1️⃣ 복잡한 설정 없이 몇 가지 명령어만으로 실제 Kubernetes와 유사한 환경을 구성 및 관리할 수 있기 때문입니다.
사용자가 즉시 Kubernetes 관련 실습이나 테스트를 시작할 수 있어 편리합니다.
2️⃣ AWS, GCP와 같은 클라우드 제공사의 관리형 Kubernetes 서비스는 학습 용도로 사용해도 비용이 발생할 수 있지만, minikube는 로컬 환경에서 구동되므로 비용이 발생하지 않습니다.
따라서 비용 걱정 없이 다양한 Kubernetes 기능이나 Helm 같은 클라우드 네이티브 툴을 마음껏 실험하고 학습할 수 있죠.
3️⃣ minikube는 가상 머신(VM)이나 컨테이너 내부에서 동작하기 때문에 로컬 시스템 내의 다른 부분과 격리된 환경을 제공합니다.
그래서 실습 중 발생할 수 있는 오류나 설정 변경이 로컬 PC의 운영체제에 직접적인 영향을 미치지 않습니다.
4️⃣ minikube는 표준 Kubernetes API를 사용하고 kubectl과 같은 실제 Kubernetes 도구를 사용해서 클러스터와 상호작용하는데요.
단일 노드로 구성된 클러스터뿐만 아니라 여러 개의 노드로 구성된 클러스터도 지원하기 때문에, 프로덕션 환경에서 사용되는 핵심 개념과 동작 방식도 거의 그대로 경험 가능하죠.
그래서 minikube에서의 학습이 실제 업무 환경으로 자연스럽게 이어질 수 있답니다.
5️⃣ minikube는 Windows, macOS, Linux 등 주요 운영체제를 모두 지원하므로, 자신의 로컬 PC 환경에 구애받지 않고 minikube를 통해 Kubernetes 학습과 테스트를 시작할 수 있습니다.
이렇게 많은 장점을 가진 minikube를 얼른 사용하고 싶은 마음이 드실 수 있는데요.
그 전에, 지금까지는 장점에 대해 알아봤으니 실제로 minikube를 설치하기 전에 유의해야 할 점도 알아보겠습니다.
❗minikube 설치 전 유의해야 할 점
minikube 최소 사양
minikube는 가상 머신 또는 컨테이너 환경에서 Kubernetes 클러스터를 새로 구축하기 때문에 일정 수준 이상의 시스템 자원이 필요합니다.
공식 사이트에 명시된 정보를 기반으로 알려드리자면, 기본적으로 최소 2 CPU 코어와 2GB 이상의 메모리, 20GB 이상의 디스크 여유 공간이 권장됩니다.
minikube가 지원하는 가상화 툴이 설치되어 있는지 확인
minikube는 여러 운영체제의 VM이나 컨테이너 환경에서 동작하기 위해 다양한 가상화 툴에 대응되는 드라이버가 준비되어 있습니다.
운영체제에 따라 minikube가 사용 가능한 가상화 툴이 다른데요. 각 운영체제별로 minikube가 지원하는 대표적인 가상화 툴을 정리하면 아래와 같습니다.
- Windows: Hyper-V(VM), Docker Desktop(VM + 컨테이너)
- macOS: HyperKit(VM), Docker Desktop (VM + 컨테이너)
- Linux: KVM(VM), Docker (컨테이너)
즉, 각 운영체제별로 위 가상화 툴이 설치되어있다면 minikube가 해당 가상화 기술을 이용해서 Kubernetes 클러스터를 생성할 수 있는 것입니다.
minikube가 실행될 때 해당 운영체제에서 사용 가능한 가상화 툴을 자동으로 감지하기 때문에 별도의 설정은 필요없지만, 만약 로컬 PC에 가상화 툴이 여러 개 설치되어 있는 경우에 원한다면 minikube가 사용할 가상화 툴을 지정할 수도 있습니다.
추가적인 네트워크 설정이 필요한지 확인
Kubernetes는 결국 서비스를 배포하는 환경이기 때문에 네트워크 환경도 중요합니다.
기업 네트워크 환경이나 특정 네트워크 구성에서는 방화벽이나 VPN이 minikube 클러스터 내부 통신 또는 외부 인터넷 접근을 차단하는 경우가 있는데요.
이럴 땐 필요한 포트를 별도로 열거나 VPN 설정을 조정하는 추가 작업이 필요할 수 있습니다.
하지만 이렇게 팀이나 조직 내에서 minikube로 네트워크 설정이 필요할 경우, 무엇보다 조직 내 관련 정책을 먼저 확인하는 것이 중요합니다.
기존 툴과의 충돌 가능성 확인
Windows나 macOS를 사용하신다면 Docker Desktop을 이미 설치하셨을 수 있습니다.
Docker Desktop은 자체적으로 Kubernetes 클러스터를 실행하는 기능을 제공하고 있는데요.
만약 해당 기능을 활성화한 상태에서 minikube를 동시에 사용하려고 한다면, kubectl 컨텍스트나 포트가 충돌하는 문제가 발생할 수도 있습니다.
따라서 둘 중 하나만 선택해서 사용하거나, kubectl 컨텍스트를 적절하고 명확히 전환해야 합니다.
kubectl CLI는 마이너 버전 1만큼의 범위 내의 Kubernetes 클러스터와 안정적으로 상호작용 가능합니다.
예를 들어, kubectl 버전이 1.33이라면, 1.32, 1.33, 1.34 버전의 Kubernetes와 안정적으로 상호작용하는 것이죠.
그래서 만약 로컬에 설치된 kubectl 버전과 minikube가 생성하는 Kubernetes 클러스터의 버전 차이가 너무 크면 일부 명령어가 예상대로 동작하지 않거나 오류가 발생할 수도 있습니다.
가능하다면 버전을 맞추거나, 그게 어렵다면 로컬에 설치된 kubectl 대신 minikube kubectl --
명령어로 minikube 내장 kubectl을 사용하는 것도 방법입니다.
minikube를 설치하기 전 알아둬야 할 점까지 살펴봤는데요.
이제 minikube를 직접 설치해서 클러스터도 생성해봐야겠죠? 차근차근 따라오실 수 있도록 제가 직접 가이드를 준비했으니 같이 살펴보겠습니다.
🖥️minikube 설치 및 클러스터 생성 가이드
1️⃣minikube 설치
minikube 공식 사이트에서는 이미 각 운영체제별로 minikube를 쉽게 설치할 수 있도록 스크립트와 가이드를 준비해두고 있습니다. 각 운영체제별 설치 명령어는 minikube 공식 문서를 확인해주세요.
저는 WSL 환경이기 때문에 공식 문서에 나오는 Linux 운영체제를 위한 아래 명령어를 터미널에서 실행하여 minikube를 쉽게 설치할 수 있었습니다.
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
minikube가 잘 설치되었는지 확인하기 위해 터미널에서 minikube version
명령어를 실행하면 아래와 같이 현재 설치된 minikube의 버전이 표시됩니다.
minikube 설치는 정말 이게 전부입니다. 참 쉽죠?
이제 minikube로 Kubernetes 클러스터를 생성해보겠습니다.
2️⃣minikube로 Kubernetes 클러스터 생성
기본적인 클러스터 생성은 minikube start
명령어 만으로도 가능하지만, minikube에는 Profile이란 개념이 있어서 minikube가 생성하는 Kubernetes 클러스터마다 이름을 붙여서 별도로 관리할 수 있는데요.
minikube start -p {프로필명}
명령어를 사용하면 원하는 이름의 k8s 클러스터를 생성 가능한 것입니다.
로컬에서 다양한 Kubernetes 실습과 테스트를 하기에 용이하도록 우리도 minikube의 Profile 옵션을 활용해보겠습니다.
아래 명령어를 실행해서 k8s-test
란 이름의 Kubernetes 클러스터를 생성합니다.
minikube start -p k8s-test
그럼 아래와 같이 minikube가 k8s-test
라는 이름의 Kubernetes 클러스터를 생성하는 과정이 터미널에 표시됩니다.
minikube start
명령어 실행이 완료되었다면 실제로 Kubernetes 클러스터가 생성되었는지 확인해봐야겠죠?
minikube status
명령어를 실행하면 minikube 클러스터의 호스트, kubelet, Kubernetes API 서버 등의 클러스터 상태 정보를 간략히 보여줍니다.
이걸로 클러스터가 정상적으로 동작 중인지, 주요 Kubernetes 컴포넌트에 문제는 없는지 빠르게 파악할 수 있는데요.
저희는 클러스터를 생성할 때 Profile을 지정했기 때문에 아래와 같은 명령어를 실행합니다.
minikube status -p k8s-test
그럼 아래와 같이 k8s-test
클러스터의 상태 정보를 확인할 수 있습니다. 모두 정상 작동 중이네요!
3️⃣kubectl 연동 여부 확인
Kubernetes 클러스터를 관리하려면 kubectl CLI가 필요하죠. 제 로컬 PC에는 이미 kubectl이 설치되어 있었는데요.
아직 이 kubectl에 대해서는 아무것도 건들지 않았지만, kubectl으로 Pod를 조회하는 명령어인 kubectl get pod
를 실행해보겠습니다.
‘default Namespace에 리소스가 없다’는 안내 메시지가 뜨네요. kubectl이 클러스터와 정상적으로 연결되었다는 뜻입니다! 근데… 왜 되는 걸까요?
minikube가 k8s-test
클러스터를 생성하면서 기존 kubectl의 설정을 바꾸기라도 한 걸까요?
맞습니다! minikube start
명령어가 완료되면서 kubectl이 minikube가 생성한 클러스터를 가리키도록 컨텍스트가 자동으로 업데이트되거든요.
그래서 minikube start
명령어가 실행된 다음 kubectl config current-context
명령어를 실행해서 사용 중인 kubectl의 컨텍스트를 조회하면 아래와 같이 kubectl이 k8s-test
클러스터를 바라보고 있다고 표시됩니다.
4️⃣minikube Dashboard 살펴보기
마지막으로 살펴볼 기능은 minikube의 대시보드입니다.
Kubernetes 클러스터의 상태를 시각적으로 확인하고 관리할 수 있는 웹 기반 대시보드를 실행해서 웹 브라우저에 띄워주는 기능인데요.
이를 통해 Pod나 Deployment, Service 등 Kubernetes 리소스 정보를 GUI 환경에서 편리하게 조회하고 간단한 관리 작업을 수행할 수 있습니다.
아래 명령어로 k8s-test
클러스터에 대한 대시보드를 실행해보겠습니다.
minikube dashboard -p k8s-test
그럼 아래와 같이 대시보드가 동작 중이라는 메시지가 표시됩니다.
터미널에 표시되는 메시지 가장 아래의 URL을 클릭하면, 아래와 같이 웹 브라우저에서 클러스터에 대한 대시보드를 확인할 수 있습니다.
지금은 클러스터에 아무 리소스도 없지만, 실습이나 테스트하면서 여러 리소스를 배포하더라도 대시보드로 한눈에 볼 수 있게 됩니다.
5️⃣사용하던 minikube 클러스터 중지하기
만약 minikube 클러스터로 실습이나 테스트를 마쳤다면 minikube stop
명령어로 클러스터를 멈출 수 있습니다.
해당 명령어는 클러스터 생성에 사용된 가상 머신 또는 컨테이너를 중지시키지만 데이터는 유지되는데요.
그래서 당장 클러스터를 사용하진 않지만 나중에 이어서 작업이 필요할 경우에 로컬 PC의 리소스를 절약하기 위해 minikube stop
명령어로 클러스터를 중지시킵니다.
아래 명령어로 k8s-test
클러스터를 중지시켜보겠습니다.
minikube stop -p k8s-test
그럼 아래와 같이 해당 클러스터를 구성하는 노드가 중지되었다는 안내 메시지가 표시됩니다.
🔭마무리
지금까지 Kubernetes 실습과 테스트에 minikube가 유리한 이유와 설치 전 유의할 점, minikube의 기본적인 설치 및 사용 방법까지 알아봤는데요.
minikube에 대해 알고 있었지만 아직 설치하거나 사용해보지 않았던 분들에게도 이 가이드가 도움이 될 거라 생각합니다.
minikube를 설치하고 클러스터 생성과 관리까지 해봤으니, 실제로 이 클러스터 위에서 Kubernetes 실습이나 클라우드 네이티브 툴을 사용해봐야겠죠?
그래서 다음 글에서는 minikube 위에서 Kubernetes 및 클라우드 네이티브 툴을 사용해보는 실습을 진행해보겠습니다.
기대해주세요!