들어가며

Kubernetes의 미니 버전인 minikube를 설치하는 방법에 대해서 정리하였습니다.

minikube 홈페이지에서 설치하기 쉽게 설명되고 있어서 직접 수행한 명령어와 로그들을 같이 정리하였습니다.

Minikube

Minikube는 Kubernetes를 로컬 개발 환경에서 쉽게 실행하고 관리할 수 있게 도와주는 도구입니다. 개발자들이 Kubernetes 클러스터를 간편하게 설정하고 실험하며 애플리케이션을 개발하는 데 사용됩니다.

Minikube를 사용하면 개발자는 로컬 머신에서 단일 노드 Kubernetes 클러스터를 실행할 수 있습니다. 실제 운영 환경이 아닌 로컬에서도 Kubernetes를 사용하여 애플리케이션을 테스트하고 디버깅할 수 있습니다.

Minikube 시작을 위해서는 Container 혹은 Virtual Machine Manager가 필요하며 minikube start --driver=가상화환경 명령어를 설정하여 해당 가상화 환경에서 지원하는 드라이버를 사용하게 됩니다.

MiniKube설치를 위한 시스템 요건

  • 2 CPUs이상, 2GB 메모리, 20G 디스크
  • 인터넷연결이 되는 환경
  • Container 혹은 Virtual Machine Manager가 필요
    • Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation
  • 설치유저는 sudo 권한이 있어야함.

저는 Redhat 계열 리눅스서버에서 설치하도록 하겠습니다.

Code : Shell Run As : Any User Elapsed Time : 1 sec
$> cat /etc/redhat-release
Red Hat Enterprise Linux release 8.9 (Ootpa)

1. Minikube 설치

root유저로 접속하여 minikube 를 설치합니다.

Code : Shell Run As : root Elapsed Time : 10 sec
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
rpm -Uvh minikube-latest.x86_64.rpm

설치 로그입니다.

$> curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 19.3M  100 19.3M    0     0  13.4M      0  0:00:01  0:00:01 --:--:-- 13.4M
$> rpm -Uvh minikube-latest.x86_64.rpm
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:minikube-1.32.0-0                ################################# [100%]

2. Cluster 기동

root유저가 아닌 다른 관리자(oracle)유저로 접속하여 Cluster를 기동합니다.

Code : Shell Run As : oracle Elapsed Time : 5 sec
minikube start

Cluster기동이 필요한 container환경이 없을 경우 아래과 에러가 발생됩니다.

* minikube v1.32.0 on Oracle 8.9 (kvm/amd64)
* Unable to pick a default driver. Here is what was considered, in preference order:
* Alternatively you could install one of these drivers:
 - docker: Not installed: exec: "docker": executable file not found in $PATH
 - kvm2: Not installed: exec: "virsh": executable file not found in $PATH
 - podman: Not installed: exec: "podman": executable file not found in $PATH
 - qemu2: Not installed: exec: "qemu-system-x86_64": executable file not found in $PATH
 - virtualbox: Not installed: unable to find VBoxManage in $PATH

X Exiting due to DRV_NOT_DETECTED: No possible driver was detected. Try specifying --driver, or see https://minikube.sigs.k8s.io/docs/start/

root유저로 podman을 설치하였습니다.

Code : Shell Run As : root Elapsed Time : 30 sec
yum install podman

minikube 클러스터 관리(oracle)유저가 podman을 수행하시키도록 sudo 권한을 추가합니다. root유저로 사용자를 추가합니다.

Code : Shell File Name : /etc/sudoers Run As : root Elapsed Time : 5 sec
echo 'oracle ALL=(ALL) NOPASSWD: /usr/bin/podman' | tee -a /etc/sudoers

root유저가 아닌 다른 관리자(oracle)유저로 접속하여 Cluster를 기동합니다.

Code : Shell Run As : oracle Elapsed Time : 5 sec
minikube start --driver=podman

minikube 실행 로그입니다. E0218로 시작되는 에러는 추후에 개선된예정이므로 무시하면 됩니다.

$> minikube start
* minikube v1.32.0 on Oracle 8.9 (kvm/amd64)
* Automatically selected the podman driver
* Using Podman driver with root privileges
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Downloading Kubernetes v1.28.3 preload ...
    > gcr.io/k8s-minikube/kicbase...:  453.90 MiB / 453.90 MiB  100.00% 36.62 M
    > preloaded-images-k8s-v18-v1...:  403.35 MiB / 403.35 MiB  100.00% 31.47 M
E0218 07:19:00.646554   61763 cache.go:189] Error downloading kic artifacts:  not yet implemented, see issue #8426
* Creating podman container (CPUs=2, Memory=3900MB) ...
* Preparing Kubernetes v1.28.3 on Docker 24.0.7 ...
  - Generating certificates and keys ...
  - Booting up control plane ...
  - Configuring RBAC rules ...
* Configuring bridge CNI (Container Networking Interface) ...
* Verifying Kubernetes components...
  - Using image gcr.io/k8s-minikube/storage-provisioner:v5
* Enabled addons: storage-provisioner, default-storageclass
* kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

3. kubectl 설치

kubectl 설치를 합니다. mimikube명령어를 이용하면 적절한 kubectl를 다운로드 받아서 설치합니다.

Code : Shell Run As : oracle Elapsed Time : 5 sec
minikube kubectl -- get po -A

kubectl설치 로그입니다.

$> minikube kubectl -- get po -A
    > kubectl.sha256:  64 B / 64 B [-------------------------] 100.00% ? p/s 0s
    > kubectl:  47.56 MiB / 47.56 MiB [-------------------] 100.00% ? p/s 200ms
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-5dd5756b68-dg4q4           1/1     Running   0             107s
kube-system   etcd-minikube                      1/1     Running   0             2m
kube-system   kube-apiserver-minikube            1/1     Running   0             2m
kube-system   kube-controller-manager-minikube   1/1     Running   0             2m2s
kube-system   kube-proxy-ww7mh                   1/1     Running   0             107s
kube-system   kube-scheduler-minikube            1/1     Running   0             2m
kube-system   storage-provisioner                1/1     Running   1 (76s ago)   118s

kubectl명령어에 대한 alias를 설정합니다.

Code : Shell Run As : oracle Elapsed Time : 5 sec
alias kubectl="minikube kubectl --"

kubectl명령어로 minikube내 component들을 확인합니다.

Code : Shell Run As : oracle Elapsed Time : 5 sec
kubectl get all
$> kubectl get all
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   13m

Cluster 관리

Kubernetes(minikube)를 잠시 중지합니다.

minikube pause

Kubernetes(minikube)를 재개합니다.

minikube unpause

Kubernetes(minikube)를 중지합니다.

minikube stop

Kubernetes(minikube)를 삭제합니다.

minikube delete --all

마무리

minikube와 podman을 이용한 설치 방법에 대해서 알아보았습니다.

Kubernetes는 여러노드로 cluster구성해야되서 부담이 되었는데, minikube를 이용하면 PC환경에서 쉽게 테스트해볼수 있습니다. 다양한 서비스들, 컴포넌트를 이용해서 사이드 프로젝트를 진행해봐야겠습니다.

참고문서

댓글남기기