우분투 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
'Linux Distribution' 카테고리의 다른 글
우분투 24.04에서 snapd 비활성화 및 삭제 방법 (0) | 2025.03.09 |
---|---|
우분투 24.04에서 polkitd 서비스 비활성화 및 제거하는 방법 (0) | 2025.03.09 |
systemctl mask와 apt-mark hold의 차이점 (0) | 2025.03.07 |
우분투 20.04에서 ModemManager 비활성화 및 제거하는 방법 (0) | 2025.03.07 |
우분투 20.04에서 systemd-resolved를 비활성화하는 방법 (0) | 2025.03.07 |