본문 바로가기

Linux Distribution

우분투 24.04에서 Minikube를 활용하여 로컬 Kubernetes 클러스터를 구축하는 방법

728x90
반응형

우분투 24.04에서 Minikube를 활용하여 로컬 Kubernetes 클러스터를 구축하는 방법

테스트 환경

$ lsb_release -d
Description:	Ubuntu 24.04.1 LTS

필수 패키지 설치

sudo apt update
sudo apt install -y curl jq

도커 설치

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl enable --now docker
sudo rm -f get-docker.sh

1. Minikube 설치

Minikube는 로컬에서 Kubernetes 클러스터를 실행할 수 있도록 도와주는 도구입니다.

 

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 version: v1.35.0
commit: dd5d320e41b5451cdf3c01891bc4e13d189586ed-dirty

2. kubectl 설치

kubectl은 Kubernetes 클러스터를 제어하는 명령줄 도구입니다.

 

kubectl 바이너리 다운로드 및 설치

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
sudo rm -f kubectl

kubectl 버전 확인

kubectl version --client
Client Version: v1.32.2
Kustomize Version: v5.5.0

3. Kubernetes 클러스터 구성

Minikube를 사용하여 로컬 Kubernetes 클러스터를 구성합니다.

가상화 지원 확인

Minikube는 가상 머신을 사용하므로 시스템이 가상화를 지원하는지 확인합니다.

grep -E --color 'vmx|svm' /proc/cpuinfo

출력이 나오면 가상화를 지원하는 것입니다.

Minikube 클러스터 시작

기본적으로 VirtualBox 드라이버를 사용하여 가상 머신을 생성하고 Kubernetes 클러스터를 구성합니다. 다른 드라이버를 사용하려면 --driver 옵션을 지정할 수 있습니다.

  • VirtualBox 드라이버 사용
minikube start
  • Docker 드라이버 사용(권장)
minikube start --driver=docker
  • 루트로 실행해야 하는 경우(비권장)
minikube start --driver=docker --force
더보기

---

$ minikube start --driver=docker --force
😄  minikube v1.35.0 on Ubuntu 24.04 (vbox/amd64)
❗  minikube skips various validations when --force is supplied; this may lead to unexpected behavior
✨  Using the docker driver based on user configuration
🛑  The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
💡  If you are running minikube within a VM, consider using --driver=none:
📘    https://minikube.sigs.k8s.io/docs/reference/drivers/none/
📌  Using Docker driver with root privileges
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🚜  Pulling base image v0.0.46 ...
💾  Downloading Kubernetes v1.32.0 preload ...
    > preloaded-images-k8s-v18-v1...:  333.57 MiB / 333.57 MiB  100.00% 26.76 M
    > gcr.io/k8s-minikube/kicbase...:  500.31 MiB / 500.31 MiB  100.00% 18.66 M
🔥  Creating docker container (CPUs=2, Memory=2200MB) ...
🐳  Preparing Kubernetes v1.32.0 on Docker 27.4.1 ...
    ▪ 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
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

---

클러스터 상태 확인

minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

kubectl을 사용하여 클러스터 확인

kubectl cluster-info
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
kubectl get nodes
NAME       STATUS   ROLES           AGE     VERSION
minikube   Ready    control-plane   2m18s   v1.32.0

Minikube 대시보드 실행

Minikube는 Kubernetes 대시보드를 제공합니다.

minikube addons list
minikube addons enable dashboard
minikube addons enable metrics-server
minikube dashboard
  • 로컬 머신에서만 접근 가능하므로 외부에서 접근하려면 추가 설정이 필요합니다.

대시보드 리소스 확인

kubectl get all -n kubernetes-dashboard

대시보드 서비스 확인

kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.96.85.90     <none>        8000/TCP   22s
kubernetes-dashboard        ClusterIP   10.97.228.164   <none>        80/TCP     22s

포트 포워딩 설정

nohup kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8001:80 --address 0.0.0.0 > port-forward.log 2>&1 &

대시보드 네임스페이스 삭제

kubectl delete namespace kubernetes-dashboard

브라우저에서 Kubernetes 대시보드를 열어 클러스터의 상태를 시각적으로 확인할 수 있습니다.

http://192.168.10.48:8001

대시보드

기본 애플리케이션 배포 테스트

kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
deployment.apps/hello-minikube created
kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed

서비스 확인 및 접속

minikube service hello-minikube --url
http://192.168.49.2:32199

위 명령어를 실행하면 URL이 출력되며 브라우저 또는 curl을 이용해 접속할 수 있습니다.

curl $(minikube service hello-minikube --url)
Request served by hello-minikube-ffcbb5874-86lfr

HTTP/1.1 GET /

Host: 192.168.49.2:32199
Accept: */*
User-Agent: curl/8.5.0

Minikube 중지

minikube stop

Minikube 재시작

minikube start

Minikube 삭제

minikube delete

 

우분투 24.04에서 Minikube를 이용한 로컬 Kubernetes 클러스터가 성공적으로 구축되었습니다.

 

참고URL

- minikube Documentation : minikube start

- Kubernetes Documentation : Install and Set Up kubectl on Linux

- dockerdocs : Install using the convenience script

- minikube Documentation : docker

 

728x90
반응형