Windows에서 Minikube 설치 및 설정 가이드

Windows 환경에서 Minikube 설치하기

1. 사전 요구사항

호스트 환경

  • 운영체제: Windows 10
  • 가상화 솔루션: VirtualBox 6.1 이상

kubectl 설치

Kubernetes 클러스터를 관리하기 위한 kubectl 명령행 도구를 다운로드하여 시스템 PATH에 추가해야 합니다.

Minikube 설치

Minikube 실행 파일을 다운로드받아 minikube.exe로rename한 후 PATH에 추가합니다.

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-urlVM 부팅 ISO 파일 URL
--registry-mirrorDocker 레지스트리 미러 주소
--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 클라이언트 사용을 권장합니다.

  1. minikube ip 명령으로 가상머신 IP 주소 확인
  2. SSH 사용자명: docker
  3. 인증 방식: 공개키
  4. 개인키 파일 경로: .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\\.minikube 디렉터리가 생성되며, cache 폴더에는 다운로드된 ISO 및 이미지 파일이 저장됩니다.

태그: minikube kubernetes Windows virtualbox kubectl

6월 20일 16:13에 게시됨