Cloud 환경에 자체 Kubernetes cluster를 설치하고 이것 저것 해보기에는 불필요한 Storage 비용이 꾸준히 발생하게 된다. (Computing 비용은 Host를 Off해서 사용한만큼만 발생하지만..) 조금 더 마음 편하게 가지고 놀 생각으로 minikube를 설치해서 다양한 실험을 진행해보기로 결정.
minikube 설치하기
Kubernetes Cluster를 Cloud에 설치할 때와 비교하면 난이도는 easy. 그냥 가이드만 따라가면 minikube dashboard를 만날 수 있다.
[참고] https://minikube.sigs.k8s.io/docs/start/?arch=%2Fmacos%2Fx86-64%2Fstable%2Fbinary+download
minikube start
minikube is local Kubernetes, focusing on making it easy to learn and develop for Kubernetes. All you need is Docker (or similarly compatible) container or a Virtual Machine environment, and Kubernetes is a single command away: minikube start What you’ll
minikube.sigs.k8s.io
➜ minikube curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 93.3M 100 93.3M 0 0 9603k 0 0:00:09 0:00:09 --:--:-- 10.7M
➜ minikube sudo install minikube-darwin-amd64 /usr/local/bin/minikube
➜ minikube minikube start
😄 Darwin 14.2.1 의 minikube v1.33.1
▪ KUBECONFIG=:./kube.conf
✨ 자동적으로 hyperkit 드라이버가 선택되었습니다
💾 드라이버 docker-machine-driver-hyperkit 다운로드 중 :
> docker-machine-driver-hyper...: 65 B / 65 B [---------] 100.00% ? p/s 0s
> docker-machine-driver-hyper...: 9.43 MiB / 9.43 MiB 100.00% 6.38 MiB p/
🔑 The 'hyperkit' driver requires elevated permissions. The following commands will be executed:
$ sudo chown root:wheel /Users/joonhopark/.minikube/bin/docker-machine-driver-hyperkit
$ sudo chmod u+s /Users/joonhopark/.minikube/bin/docker-machine-driver-hyperkit
💿 가상 머신 부트 이미지 다운로드 중 ...
> minikube-v1.33.1-amd64.iso....: 65 B / 65 B [---------] 100.00% ? p/s 0s
> minikube-v1.33.1-amd64.iso: 314.16 MiB / 314.16 MiB 100.00% 13.72 MiB p
👍 Starting "minikube" primary control-plane node in "minikube" cluster
💾 쿠버네티스 v1.30.0 을 다운로드 중 ...
> preloaded-images-k8s-v18-v1...: 342.90 MiB / 342.90 MiB 100.00% 13.61 M
🔥 hyperkit VM (CPUs=2, Memory=4000MB, Disk=20000MB) 를 생성하는 중 ...
🐳 쿠버네티스 v1.30.0 을 Docker 26.0.2 런타임으로 설치하는 중
▪ 인증서 및 키를 생성하는 중 ...
▪ 컨트롤 플레인을 부팅하는 중 ...
▪ RBAC 규칙을 구성하는 중 ...
🔗 bridge CNI (Container Networking Interface) 를 구성하는 중 ...
🔎 Kubernetes 구성 요소를 확인...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 애드온 활성화 : storage-provisioner, default-storageclass
❗ /usr/local/bin/kubectl is version 1.20.0, which may have incompatibilities with Kubernetes 1.30.0.
▪ Want kubectl v1.30.0? Try 'minikube kubectl -- get pods -A'
🏄 끝났습니다! kubectl이 "minikube" 클러스터와 "default" 네임스페이스를 기본적으로 사용하도록 구성되었습니다.
점검
Client 입장에서 아직은 Kubernetes Cluster와 차이를 모를 정도로 kubectl이 동작한다.
➜ minikube alias kubectl="minikube kubectl --"
➜ minikube kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7db6d8ff4d-gfhmd 1/1 Running 0 4m8s
kube-system etcd-minikube 1/1 Running 0 4m22s
kube-system kube-apiserver-minikube 1/1 Running 0 4m22s
kube-system kube-controller-manager-minikube 1/1 Running 0 4m23s
kube-system kube-proxy-5k24r 1/1 Running 0 4m8s
kube-system kube-scheduler-minikube 1/1 Running 0 4m22s
kube-system storage-provisioner 1/1 Running 0 4m20s
➜ minikube minikube dashboard
🔌 대시보드를 활성화하는 중 ...
▪ Using image docker.io/kubernetesui/dashboard:v2.7.0
▪ Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
💡 Some dashboard features require the metrics-server addon. To enable all features please run:
minikube addons enable metrics-server
🤔 Dashboard 의 상태를 확인 중입니다 ...
🚀 프록시를 시작하는 중 ...
🤔 Proxy 의 상태를 확인 중입니다 ...
🎉 Opening http://127.0.0.1:56820/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
minikube dashboard는 우선 합격. GUI에 편한 사람들은 나쁘지 않게 쓸 수도 있을 것 같다.
설치 과정을 수행한 폴더에 kube.conf 파일을 이용하여 Cluster 접근도 정상적으로 수행이 된다. CLI도 거의 동일한데 로컬에서 뭔가 실험할 때 minikube 쓸만한 것 같다. 다양한 설정을 진행하며 minikube에 대해 차차 알아가기로..
설치하고 Node 상태를 보니 많은 것을 설치할 수는 없을 것 같은데, 설치하려는 application의 resource request를 제거하고 실험을 하든가.. 아무튼..
│ Allocated resources:
│ (Total limits may be over 100 percent, i.e., overcommitted.)
│ Resource Requests Limits
│ -------- -------- ------
│ cpu 750m (37%) 0 (0%)
│ memory 170Mi (4%) 170Mi (4%)
│ ephemeral-storage 0 (0%) 0 (0%)
│ hugepages-2Mi 0 (0%) 0 (0%)