Windows 환경에서 Minikube 설치하기
1. 사전 요구사항
호스트 환경
- 운영체제: Windows 10
- 가상화 솔루션: VirtualBox 6.1 이상
kubectl 설치
Kubernetes 클러스터를 관리하기 위한 kubectl 명령행 도구를 다운로드하여 시스템 PATH에 추가해야 합니다.
- 다운로드 주소: https://storage.googleapis.com/kubernetes-release/release/v1.19.0/bin/windows/amd64/kubectl.exe
Minikube 설치
Minikube 실행 파일을 다운로드받아 minikube.exe로rename한 후 PATH에 추가합니다.
- 다운로드 주소: https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.13.0/minikube-windows-amd64.exe
GitHub 릴리스 페이지에서도 직접 다운로드가 가능합니다.
설치 확인
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-08-26T14:30:33Z", GoVersion:"go1.15", Compiler:"gc", Platform:"windows/amd64"}
Unable to connect to the server: dial tcp [::1]:8080: connectex: No connection could be made because the target machine actively refused it.
$ minikube version
minikube version: v1.13.0
commit: 23aa1eb200a03ae5883dd9d453d4daf3e0f59668
참고: kubectl 서버 연결 오류는 정상입니다. 클러스터 생성 전까지 해당 메시지가 표시됩니다.
2. Kubernetes 클러스터 생성
클러스터 생성 명령어
minikube start --vm-driver=virtualbox --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.7.3.iso --registry-mirror=https://reg-mirror.qiniu.com
주요 옵션 설명
| --vm-driver | 가상머신 드라이버 지정 (virtualbox, vmwarefusion, hyperv, vmware) |
| --image-mirror-country | 미러 국가 코드,中国大陆는 cn으로 설정 |
| --image-repository | 컨테이너 이미지 저장소 주소 |
| --iso-url | VM 부팅 ISO 파일 URL |
| --registry-mirror | Docker 레지스트리 미러 주소 |
| --cpu | 가상머신 CPU 코어 수 |
| --memory | 가상머신 메모리 크기 |
| --disk-size | 가상머신 디스크 크기 |
전체 옵션은 minikube start --help 명령어로 확인 가능합니다.
클러스터 생성 예시
$ minikube start --vm-driver=virtualbox --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
😄 Microsoft Windows 10 Home China 10.0.18362 Build 18362 의 minikube v1.13.0
✨ 사용자가 지정한 virtualbox 드라이버 사용
✅ 이미지 저장소로 registry.cn-hangzhou.aliyuncs.com/google_containers 사용
💿 VM 부트 이미지 다운로드 중...
> minikube-v1.13.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s
> minikube-v1.13.0.iso: 173.73 MiB / 173.73 MiB [ 100.00% 18.35 MiB p/s 10s
� Starting control plane node minikube in cluster minikube
� Creating virtualbox VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
� Docker 19.03.12에서 Kubernetes v1.19.0 준비 중...
> kubectl.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubeadm.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubelet.sha256: 65 B / 65 B [--------------------------] 100.00% ? p/s 0s
> kubectl: 41.01 MiB / 41.01 MiB [---------------] 11.31 MiB p/s 4s
> kubeadm: 37.30 MiB / 37.30 MiB [---------------] 1.97 MiB p/s 19s
> kubelet: 104.88 MiB / 104.88 MiB [-------------] 4.87 MiB p/s 22s
� Kubernetes 구성요소 확인 중...
✅ 기본 애드온 활성화: default-storageclass, storage-provisioner
🎉 kubectl가 기본적으로 "minikube"를 사용하도록 설정됨
클러스터 상태 확인
$ minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
$ minikube service list
|-------------|------------|--------------|-----|
| NAMESPACE | NAME | TARGET PORT | URL |
|-------------|------------|--------------|-----|
| default | kubernetes | No node port |
| kube-system | kube-dns | No node port |
|-------------|------------|--------------|-----|
$ minikube profile list
|----------|------------|---------|----------------|------|---------|---------|
| Profile | VM Driver | Runtime | IP | Port | Version | Status |
|----------|------------|---------|----------------|------|---------|---------|
| minikube | virtualbox | docker | 192.168.99.100 | 8443 | v1.19.0 | Running |
|----------|------------|---------|----------------|------|---------|---------|
애드온 목록 확인
$ minikube addons list
|-----------------------------|----------|--------------|
| ADDON NAME | PROFILE | STATUS |
|-----------------------------|----------|--------------|
| ambassador | minikube | disabled |
| dashboard | minikube | disabled |
| default-storageclass | minikube | enabled |
| efk | minikube | disabled |
| freshpod | minikube | disabled |
| gcp-auth | minikube | disabled |
| gvisor | minikube | disabled |
| helm-tiller | minikube | disabled |
| ingress | minikube | disabled |
| ingress-dns | minikube | disabled |
| istio | minikube | disabled |
| istio-provisioner | minikube | disabled |
| kubevirt | minikube | disabled |
| logviewer | minikube | disabled |
| metallb | minikube | disabled |
| metrics-server | minikube | disabled |
| nvidia-driver-installer | minikube | disabled |
| nvidia-gpu-device-plugin | minikube | disabled |
| olm | minikube | disabled |
| pod-security-policy | minikube | disabled |
| registry | minikube | disabled |
| registry-aliases | minikube | disabled |
| registry-creds | minikube | disabled |
| storage-provisioner | minikube | enabled |
| storage-provisioner-gluster | minikube | disabled |
|-----------------------------|----------|--------------|
노드 및 Pod 정보 확인
$ minikube node list
minikube 192.168.99.100
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 62m v1.19.0
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6c76c8bb89-8njsf 1/1 Running 0 85m
kube-system etcd-minikube 1/1 Running 0 85m
kube-system kube-apiserver-minikube 1/1 Running 0 85m
kube-system kube-controller-manager-minikube 1/1 Running 0 85m
kube-system kube-proxy-r5vg6 1/1 Running 0 85m
kube-system kube-scheduler-minikube 1/1 Running 0 85m
kube-system storage-provisioner 1/1 Running 0 85m
kubernetes-dashboard dashboard-metrics-scraper-c95fcf479-znstc 1/1 Running 0 16m
kubernetes-dashboard kubernetes-dashboard-5c448bc4bf-wtzmd 1/1 Running 0 16m
3. Minikube 가상머신 접근
SSH 연결
minikube ssh 명령어로 가상머신 내부에 접근할 수 있으며, 외부 SSH 클라이언트 사용을 권장합니다.
minikube ip명령으로 가상머신 IP 주소 확인- SSH 사용자명: docker
- 인증 방식: 공개키
- 개인키 파일 경로:
.minikube\machines\minikube\id_rsa
$ minikube ip
192.168.99.100
$ minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
448f70c7f8e2 kubernetesui/metrics-scraper "/metrics-sidecar" 10 minutes ago Up 10 minutes k8s_dashboard-metrics-scraper_dashboard-metrics-scraper-c95fcf479-znstc_kubernetes-dashboard_7a3e77c6-093d-4154-822b-7baf21145cb1_0
55a85ae3c2ad kubernetesui/dashboard "/dashboard --insecu…" 10 minutes ago Up 10 minutes k8s_kubernetes-dashboard_kubernetes-dashboard-5c448bc4bf-wtzmd_kubernetes-dashboard_69701406-e4ec-4a60-b6c0-d945a745a180_0
34432b64b1ff registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner:v3 "/storage-provisioner" About an hour ago Up About an hour k8s_storage-provisioner_storage-provisioner_kube-system_e757cda2-612f-4a67-9727-523e80221162_0
f27b7bf41f1f registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.7.0 "/coredns -conf /etc…" About an hour ago Up About an hour k8s_coredns_coredns-6c76c8bb89-8njsf_kube-system_455e485c-1373-4f0f-bac5-7ed64a6a56ce_0
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy v1.19.0 bc9c328f379c 8 weeks ago 118MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver v1.19.0 1b74e93ece2f 8 weeks ago 119MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager v1.19.0 09d665d529d0 8 weeks ago 111MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler v1.19.0 cbdc8369d8b1 8 weeks ago 45.7MB
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd 3.4.9-1 d4ca8726196c 3 months ago 253MB
$ exit
logout
4. Kubernetes Dashboard 실행
Minikube Dashboard를 실행하면 기본 브라우저가 자동으로 열리며 Kubernetes 웹 UI에 접근할 수 있습니다.
$ minikube dashboard
🤔 dashboard 활성화 중...
✅ dashboard 실행 상태 확인 중...
🚀 프록시 시작 중...
✅ 프록시 실행 상태 확인 중...
📊 기본 브라우저에서 http://127.0.0.1:51609/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ 열기
5. 참고 자료
참고: VirtualBox 인터페이스 접근에는 관리자 권한이 필요합니다. 클러스터 생성 시 자동으로 C:\Users\ 디렉터리가 생성되며, cache 폴더에는 다운로드된 ISO 및 이미지 파일이 저장됩니다.