minikube 시작
개요
minikube는 Kubernetes 학습용으로 사용할 수 있는 컨테이너 기반 Local Kubernetes다.
윈도우에서 쿠버네티스를 배울 때 도커 데스크탑 설정에서 단순히 “Enable Kubernetes” 체크만 해 주면 쿠버네티스 설치가 되었는데, 우분투에서 진행하려고 하니 동일한 방법을 사용하기 힙들어서 찾아보던 중에 minikube라는 친구를 찾아서 이걸로 개발을 진행했다.
개발은 Ubuntu 24.04에서 진행했다.
kubectl 설치
우선 kubectl을 snap으로 설치해준다.
kubectl은 쿠버네티스 API를 사용하여 쿠버네티스 클러스터의 컨트롤 플레인과 통신하기 위한 커멘드 라인 툴이고, 간편하게 snap으로 설치했다.
1
sudo snap install kubectl --classic
결과
1
kubectl 1.31.2 from Canonical✓ installed
정상적으로 작동하는지 명령어로 확인한다.
1
kubectl version --client
결과
1
2
Client Version: v1.31.2
Kustomize Version: v5.4.2
minikube 설치
이제 minikube를 설치해 주는데, 공식 홈페이지에서는 Binary 설치와 Pakage 설치를 안내하고 있다. 나는 Binary 설치로 진행했다.
Binary 파일 다운로드
1
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
결과
1
2
3
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 99.0M 100 99.0M 0 0 27.4M 0 0:00:03 0:00:03 --:--:-- 27.4M
Binary 파일 이동
minikube 명령어로 바로 접근할 수 있도록 위치를 잡아준다.
1
2
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube version
결과
1
minikube version: v1.34.0
Kubernetes Cluster 활성화
Docker를 기반으로 Kubernetes Cluster를 활성화한다.
1
minikube start --driver=docker
결과
1
2
3
4
5
6
* Ubuntu 24.04 의 minikube v1.34.0
* 유저 환경 설정 정보에 기반하여 docker 드라이버를 사용하는 중
X Exiting due to PROVIDER_DOCKER_NEWGRP: "docker version --format <no value>-<no value>:<no value>" exit status 1: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/version": dial unix /var/run/docker.sock: connect: permission denied
* 권장: Add your user to the 'docker' group: 'sudo usermod -aG docker $USER && newgrp docker'
* 문서: https://docs.docker.com/engine/install/linux-postinstall/
결과를 보면 권한 문제로 사용중인 유저를 docker 그룹에 추가하라고 한다.
(sudo로 명령한다고 해결되지 않는다! sudo 명령어는 root 권한으로 실행하는 명령어이기 때문이다.)
사용중인 유저를 docker 그룹에 넣어주고 다시 실행시킨다.
1
2
sudo usermod -aG docker username && newgrp docker
minikube start --driver=docker
결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
* Ubuntu 24.04 의 minikube v1.34.0
* 유저 환경 설정 정보에 기반하여 docker 드라이버를 사용하는 중
* Using Docker driver with root privileges
* Starting "minikube" primary control-plane node in "minikube" cluster
* Pulling base image v0.0.45 ...
* 쿠버네티스 v1.31.0 을 다운로드 중 ...
> preloaded-images-k8s-v18-v1...: 326.69 MiB / 326.69 MiB 100.00% 28.33 M
> gcr.io/k8s-minikube/kicbase...: 487.90 MiB / 487.90 MiB 100.00% 38.88 M
* Creating docker container (CPUs=2, Memory=3900MB) ...
* 쿠버네티스 v1.31.0 을 Docker 27.2.0 런타임으로 설치하는 중
- 인증서 및 키를 생성하는 중 ...
- 컨트롤 플레인을 부팅하는 중 ...
- RBAC 규칙을 구성하는 중 ...
* bridge CNI (Container Networking Interface) 를 구성하는 중 ...
* Kubernetes 구성 요소를 확인...
- Using image gcr.io/k8s-minikube/storage-provisioner:v5
* 애드온 활성화 : default-storageclass, storage-provisioner
* 끝났습니다! kubectl이 "minikube" 클러스터와 "default" 네임스페이스를 기본적으로 사용하도록 구성되었습니다.
정상적으로 실행되었는지 확인해본다.
1
minikube status
결과
1
2
3
4
5
6
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
클러스터가 정상적으로 실행되었다. 이제 kubectl 명령어로 쿠버네티스 클러스터를 관리할 수 있다.
기본 설정은 아래 명령어로 확인할 수 있다.
1
kubectl config view
결과
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
apiVersion: v1
clusters:
- cluster:
certificate-authority:
extensions:
- extension:
last-update: Sat, 09 Nov 2024 18:31:37 KST
provider: minikube.sigs.k8s.io
version: v1.34.0
name: cluster_info
server: https://192.168.49.2:8443
name: minikube
contexts:
- context:
cluster: minikube
extensions:
- extension:
last-update: Sat, 09 Nov 2024 18:31:37 KST
provider: minikube.sigs.k8s.io
version: v1.34.0
name: context_info
namespace: default
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
user:
client-certificate:
client-key:
addons: Ingress
이건 추가로 적는건데… 원래 이게 정상인지는 모르겠는데 minikube는 기본적으로 ingress가 활성화가 안되어 있다.
쿠버네티스 클러스터를 올리고 클러스터 안에 ingress가 실행이 계속 안되어서 아주 긴 시간 삽질을 하다가 애드온 설치로 해결했다.
1
minikube addons enable ingress
이 놈 때문에 ingress가 안올라와서 진짜 별 쓸데 없는 삽질을 엄청나게 했다.
Host Nginx가 80, 443 포트를 잡고 있어서 그런가? 싶어서 Nginx도 내려보고 ingress 설정을 바꿔보려고 ingress controller였나? 쓸데 없는 걸 설치해서 설정도 바꿔보고 했는데 그냥 단순히 minikube의 ingress가 없어서 올라오지 않은 것이었다.
참고
Kubernetes - kubectl
Setup Kubernetes kubectl and Minikube on Ubuntu 22.04 LTS
minikube GetStarted!