[Kubernetes] 4. Minikube로 시작하는 kubernetes

Kubernetes 클러스터를 구축하기 위해 두 개의 노드를 준비하고 이를 마스터와 각 노드로 나누어야 하는 구조를 갖춰야 하지만 이는 실제 서비스하기 위한 환경에 대한 권장 사항이었습니다.

 

쿠버네티스를 실 서비스해보기 전에 직접 사용해보는 방법은 여러 가지 있습니다. AWS의 EKS, GCP의 GKE 등 클라우드 벤더를 사용하는 방법 직접 쿠버네티스 클러스터를 구축하는 방법이 있지만 실제로 체험해보기 위해 클라우드 벤더의 값비싼 비용을 사용하거나 마스터, 노드의 하드웨어 장비를 직접 구입하는 것은 비용적으로 부담이 될 수 있을 것입니다.

 

Minikube는 로컬 환경에서 최상의 쿠버네티스 환경을 제공하기 위한 프로젝트로 우리는 쿠버네티스를 간단하게 체험해보기 위해 일련의 마스터, 슬레이브 노드를 구성하고 API를 연동하는 번거로운 작업을 굳이 하지 않아도 됩니다.

 

https://github.com/kubernetes/minikube

 

kubernetes/minikube

Run Kubernetes locally. Contribute to kubernetes/minikube development by creating an account on GitHub.

github.com

위와 같은 비슷한 솔루션으로 Ubuntu Linux의 제공자인 Canonical에서는 microk8s라는 솔루션을 제공해주고 있습니다.

 

https://microk8s.io/

 

MicroK8s - Zero-ops Kubernetes for developers, edge and IoT | MicroK8s

MicroK8s is the simplest production-grade upstream K8s. Lightweight and focused. Single command install on Linux, Windows and macOS. Made for devops, great for edge, appliances and IoT. Full high availability Kubernetes with autonomous clusters.

microk8s.io

Microk8s는 우분투 리눅스와의 호환성이 매우 좋고, 우분투 리눅스에서 설치가 매우 쉽고 튜토리얼이 잘 되어 있다는 장점이 있는데요. 특히 Microk8s는 라즈베리파이와 같은 Embedded 환경에서도 쉽게 사용할 수 있는 Embedded Kubernetes를 제공하기 떄문에 작은 기기에서 쿠버네티스를 운영해보려고 시도해보시는 거라면 microk8s는 좋은 선택이라고 할 수 있을 것 같네요.

 

 

 

 

Minikube

Minikube는 Mini + kube의 약자로 쿠버네티스의 클러스터 구축 과정을 대폭 줄이고, 가능한 하나의 단일 로컬 환경에서 쉽게 쿠버네티스를 체험해보기 위해 개발된 프로젝트입니다. 

 

Minikube를 설치하기 위한 최소 사양은 위와 같이 듀얼 코어 이상의 프로세서와 최소 2 GB의 메모리만 갖춰져 있으면 됩니다. 요즘 하드디스크 크기는 못해도 1 TB 이상이 되기 때문에 큰 문제는 없을 것이라고 봅니다.

 

다만 Windows 운영체제에서는 CPU에서 Virtualization Support(가상화) 기능이 지원되어야 합니다. 리눅스 외에 운영체제에서는 컨테이너를 구동할시, VMware, Virtualbox 등의 가상화 기술을 사용하기 때문입니다. 

 

또 Minikube는 NVIDIA GPU Support도 되기 때문에 DeepOps와 같은 딥러닝 환경을 구축하는 실습에 있어서도 매우 강력한 솔루션을 제공하는 모습이 보이기 때문에 처음 쿠버네티스를 사용하시는 분이라면 여러모로 체험할 수 있는 좋은 솔루션이라고 생각합니다.

 

그럼 본격적인 설치를 들어가보도록 하죠.

 

 

 

Minikube 설치

Minikube를 설치하기 전에, 반드시 Docker가 설치되어 있어야 하며, 만약 Docker가 설치되어 있지 않다면 아래의 글을 이용해서 먼저 Docker를 설치해주시기 바랍니다.

 

https://blog.neonkid.xyz/85

 

Docker, 그것은 무엇이고, 설치는 어떻게할까?

요즘 Docker 라고 하는 것이 굉장히 인기입니다. Docker 컨테이너는 알기 시작한건 저도 작년 10월부터였는데, 저도 꽤 많이 사용하고 있습니다. What is Docker? Docker를 검색하시는 분들은 아마 한 번

blog.neonkid.xyz

 

이 글에서 Minikube 설치를 위해 아래의 환경을 사용하였습니다.

 

  • Ubuntu Linux 20.04 
  • 32 GB RAM
  • AMD Ryzen 5 3700X 8 Core CPU

윈도 환경이라면, Virtualbox를 별도로 설치해야 하고, Mac 환경이라면 Docker Desktop을 설치할 시 쿠버네티스 환경을 쉽게 설치할 수 있습니다. 자세한 설치 방법은 아래의 URL에서 확인하실 수 있습니다.

 

https://minikube.sigs.k8s.io/docs/start/

 

minikube start

minikube is local Kubernetes

minikube.sigs.k8s.io

우분투 리눅스에서 설치할 땐 아래의 두 가지 방법을 사용할 수 있습니다.

 

  1. Minikube 설치 바이너리를 이용하는 방법
  2. Debian Package 바이너리(.deb)를 이용하는 방법

 

설치의 난이도는 둘 다 큰 차이가 없기 때문에 두 가지 모두 진행해보도록 하겠습니다.

$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

먼저 Google Storage에 있는 Minikube 설치 바이너리를 curl 명령어를 이용해 다운로드 받습니다.

$ sudo install minikube-linux-amd64 /usr/local/bin/minikube

위 명령어를 이용해 minikube 바이너리 설치 경로를 입력해줍니다. 일반적으로 리눅스에서 바이너리 설치할 시 사용하는 경로인 /usr/local/bin/minikube를 이용하도록 하겠습니다.

 

설치가 끝나면 /usr/local/bin 경로에 minikube 파일이 생기게 됩니다.

 

두 번째 방법으로 DEB(Debian 패키지 바이너리)를 이용하는 방법입니다. 이 역시 curl 명령어를 이용해서 Google Storage에 있는 Minikube deb 파일을 받아서 실행하는 방법입니다.

$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb

먼저 Google Storage에 있는 Minikube 설치 DEB 바이너리를 curl 명령어를 이용해 다운로드 받습니다.

$ sudo dpkg -i minikube_latest_amd64.deb

Debian 패키지 설치 명령어를 이용해 minikube를 설치해주면 끝입니다.

$ minikube start

minikube start 명령어를 사용하여 쿠버네티스 설치를 마무리하고 Minikube를 실행해줍니다.

 

만약 위의 오류가 나타난다면, 아래의 명령어를 이용해서 현재 터미널 세션의 그룹을 docker 그룹으로 바꿔주도록 합시다. 본래는 터미널을 재실행해도 상관없지만, 터미널 재실행이 번거롭다면 이 방법을 쓰는 걸 추천합니다.

$ sudo newgrp docker

이렇게하면 오류 없이 잘 진행되는 것을 알 수 있습니다.

 

Done! 메시지가 나타나면 Minikube 설치가 완료된 것입니다. 그 다음은 쿠버네티스를 제어할 프로그램인 kubectl 바이너리가 필요합니다.

 

 

 

 

kubectl 설치

kubectl은 쿠버네티스 클러스터를 제어할 수 있는 명령어 바이너리입니다. 마치 ssh와도 같아서 로컬에 있는 쿠버네티스 클러스터 뿐만 아니라 원격에 있는 쿠버네티스 클러스터도 제어할 수 있어, 쿠버네티스를 설치하지 않은 환경에서도 쿠버네티스를 사용할 줄 알거나 사용하고 있따면 kubectl 명령어는 자신의 머신에 없어서는 안될 필수 요소라고 할 수 있죠.

$ snap install kubectl --classic

우분투에서는 snap 패키지 관리자를 이용해서 kubectl 명령어를 설치할 수 있습니다.

 

kubectl을 설치한 뒤 연결된 노드를 확인해보면, 위와 같이 minikube가 마스터 밑으로 잘 설치되어 있음을 알 수 있습니다. 쿠버네티스 클러스터 구축시, 별도의 마스터 설치 노드 설치 및 API 연결 과정 없이 로컬 환경에서 쉽게 쿠버네티스 클러스터와 노드가 구성될 수 있음을 알 수 있습니다.

 

 

 

 

Minikube Dashboard

Minikube에서는 쿠버네티스를 처음 사용하는 사람들이 명령어에 적응하기 어려워 쉽게 사용할 수 있도록 GUI 환경을 제공하는데, 이것이 바로 Minikube의 대시보드입니다. 

 

물론 쿠버네티스 클러스터를 하나부터 열까지 촘촘하게 마스터, 노드로 구성하신 분들도 GUI로 사용할 수 있는 여러 가지 도구들이 있습니다. Rancher가 그 중 하나인데, 마우스 하나만으로 간편하게 노드에서 애플리케이션을 배포하고 네임스페이스도 쉽게 만들어낼 수 있어서 내가 원하는 서버를 수동으로 구축하거나 운영체제 등을 설치하지 않아도 쉽게 만들 수 있다는 장점이 있습니다.  이 부분은 나중에 다른 파트에서 자세히 다뤄보도록 하겠습니다.

 

그러나 고급 쿠버네티스 사용자들에겐 그렇게 추천하지 않습니다. 자잘한 라벨 등이 생성되어 오히려 구성 YAML 파일이 더욱 복잡해지기 때문에 쿠버네티스를 CLI로 사용하시고 커스텀을 자유롭게 하실 수 있는 분들에게는 CLI 환경이 더 낫습니다.

 

Minikube 또한 Rancher 정도의 레벨은 아니지만 비슷한 GUI 도구를 제공하는데, 한 번 사용해보도록 하죠.

$ minikube addons list

쿠버네티스에서는 쿠버네티스를 효율적으로 사용할 수 있는 addons를 제공합니다. Minikube 또한 addons가 있는데, 그 중 dashboard가 이에 해당하며, 위 명령어를 이용해서 dashboard가 활성화 되어 있는지 확인할 수 있습니다.

 

현재 dashboard가 활성화 되어 있지 않기 때문에 우리는 아래의 명령어를 통해서 dashboard를 활성화 해주도록 합시다.

$ minikube addons enable dashboard

그러면 위와 같이 dashboard addon이 활성화 되었다는 메시지를 받을 수 있습니다.

$ minikube dashboard

위 명령어를 이용하면 minikube dashboard 서버가 실행되며 자동으로 웹을 띄워줍니다.

 

minikube를 구성한 뒤, 아무것도 하지 않아 기본적인 서비스와 계정, 네임스페이스만 존재합니다. 우측 상단의 + 버튼을 이용해서 원하는 리소스를 추가할 수 있습니다.

 

Minikube dashboard에서는 Pod 생성을 쉽게 해줄 수 있는 서식을 통한 생성이 있습니다. 원하는 애플리케이션 이름을 입력하고, Docker Registry 주소를 입력한 다음 원하는 파드 갯수를 입력하고 Deploy 버튼을 누르면 해당 갯수 만큼 컨테이너를 생성해줍니다.

 

파드를 1개만 주었으므로 파드쪽에 1개의 파드만이 나타나며 생성 중인 경우 주황색이, 오류가 발생했을 경우 빨간색, 정상 동작하면 초록색으로 표시됩니다.

 

 

이 오류는 kubectl CLI에서 제공하는 오류 로그를 그대로 보여주기 때문에 참고용이 아닌 실제 운영용으로도 사용할 수 있는 레벨입니다. 

 

왼쪽 상단에 있는 "로그보기" 버튼을 눌러서, 로그를 볼 수도 있고,

 

쉘 실행을 통해서 컨테이너 내의 nginx 설정이 어떤식으로 되어 있는지도 쉽게 확인할 수 있습니다.

 

 

 

 

 

마치며...

비록 쿠버네티스의 설치는 복잡하고 어려웠지만 쿠버네티스 팀에서는 Minikube라는 간소한 쿠버네티스 프로젝트를 구축하여 더 많은 엔지니어들이 쿠버네티스를 사용할 수 있도록 하였으며 이 외에도 microk8s 등을 이용하여도 쉽게 체험해볼 수 있는 방법 등이 많이 있습니다.

 

쿠버네티스를 정말로 처음 사용하시는 분들한테는 개인적으로 Minikube를 많이 추천드립니다. GUI 도구가 정말 잘되어있고, 무엇보다도 대시보드에서 GUI에서 하는 행동들을 CLI의 어떤식으로 동작하는지 힌트를 보여주기도 함과 동시에 minikube 명령어를 잘못 입력하여도 힌트를 제공해주는 등 여러가지 초보자 분들을 위한 옵션들이 정말 많이 제공됩니다.

 

반면 microk8s도 Minikube와 마찬가지로 가볍고 라이트한 쿠버네티스 환경을 제공해주긴 하지만 dashboard와 같은 친절한 스타일을 제공해주기 보단, 정말 가벼운 형태의 쿠버네티스 및 개인용도로 적합한 환경의 쿠버네티스 클러스터를 구축할 수 있는 용도에 적합한 솔루션이라고 생각합니다. 나중에 기회가 된다면 microk8s에 대한 글도 같이 남겨보도록 하겠습니다.

 

 

comments powered by Disqus

Tistory Comments 0