[一日30分 인생승리의 학습법] Windows 10에 Minikube 설치하기
2021.06.27 23:01
[一日30分 인생승리의 학습법] Windows 10에 Minikube 설치하기
1. [제어판] > [프로그램 제거] > [Windows 기능 켜기/끄기] 를 선택하고 아래 그림과 같이 [Hyper-V]를 선택하여 설치한다.
![]()
2. 다음 사이트에서 Docker를 내려받아 설치한다.
> https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe
![]()
3. 다음 사이트에서 Kubectl.exe 파일과 Minikube 최신 파일을 내려받아 폴더를 생성하고 저장한다.
https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-kubectl-on-windows

위의 사이트에서 글을 쓰는 현재 최신 버전은 1.17.4이므로 내려받기 주소는 다음과 같다.
https://storage.googleapis.com/kubernetes-release/release/v1.17.4/bin/windows/amd64/kubectl.exe
https://github.com/kubernetes/minikube/releases

위의 사이트에서는 minikube-windows-amd64.exe 파일을 내려받아 minikube.exe로 이름을 변경한다.
4. 동일한 폴더에 저장한 후 Path를 지정하여 개발에 용이하게 사용할 수 있도록 설정한다.
![]()
![]()
5. 윈도우 버튼에서 [Windows 관리도구] > [Hyper-V 관리자] 메뉴를 클릭한다.
Hyper-V 관리자에서 Docker Desktop 설치 시에 자동으로 생성된 DESKTOP-xxxxx 가상머신이 생성되어 있는 것이 보인다.
메모리 부족으로 minikube가 실행되지 않을 경우, 모든 가상 머신과 가상 컴퓨터를 삭제한 후 minikube start를 다시 실행한다.
6. 명령 프롬프트를 관리자 권한으로 실행하고 다음 명령어를 이용하여 Minikube를 실행한다. Hyper-V 관리자에서 아래와 같이 minikube 가상머신이 생성된다.
> minikube start --vm-driver=hyperv --hyperv-virtual-switch="Default Switch" --cpus=4 --memory=4096
![]()
7. Minikube에서 Docker 데몬을 재사용하기 위해 다음과 같이 명령어를 수행한다. 로컬에서 빌드된 이미지를 Minikube가 사용할 수 있도록 환경을 설정한다.
Windows 10의 PowerShell을 관리자 모드로 실행하여 다음과 같이 명령어를 실행한다
> minikube docker-env
> minikube docker-env | Invoke-Expression
8. 다음 명령어를 실행하여 설치가 제대로 이루어졌는지를 확인한다.
> kubectl version --client
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:20:10Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"windows/amd64"}
9. Docker settings를 선택하여 다음과 같이 설정한다.
'Expose daemon on tcp://localhost:2375 without TLS' 체크를 해지한다.
Windows Build 버전이 1907인 경우 'experimental'값을 true로 설정한다.
![]()
Kubernetes에서 'Enable Kubernetes'와 'Deploy Docker Stacks to Kubernetes by Default'를 체크한다.
10. 다음 명령어를 실행하여 대시보드를 실행한다.
> minikube dashboard
minikube dashboard에서 Namespace나 Persistent Volume을 생성할 때 좌측 중간의 Namespace가 default로 설정되어 있으면 다음과 같이 오류가 발생한다.
"the server could not find the requested resource"
이 오류를 해결하기 위해서는 Namespaces를 [all namespaces]로 지정하고 Namespace나 Persistent Volumes를 생성한다.
![]()
11. Kubernetes를 삭제하려면 다음과 같이 실행한다.
> minikube delete
12. Eclipse를 실행하여 [Help] > [Install New Software] 를 선택한다. Work with에서 '<ECLIPSE_VERSION>">https://download.eclipse.org/releases/<ECLIPSE_VERSION>'을 선택하고 설치항목 중 [General Purpose Tools] > [Docker Tooling]을 선택하여 설치한다.
![]()
13. 설치가 완료되면 Eclipse Perspective에서 Docker Explorer를 선택하여 Docker 개발 Perspective를 활성화 한다.
14. Windows PowerShell에서 아래와 같이 명령어를 수행하여 DOCKER_HOST와 DOCKER_CERT_PATH 를 확인한다.
> minikube docker-env
$Env:DOCKER_TLS_VERIFY = "1"
$Env:DOCKER_HOST = "tcp://172.18.46.99:2376"
$Env:DOCKER_CERT_PATH = "C:\Users\joseph\.minikube\certs"
$Env:MINIKUBE_ACTIVE_DOCKERD = "minikube"
# To point your shell to minikube's docker-daemon, run:
# & minikube -p minikube docker-env | Invoke-Expression
15. Eclipse의 Docker Explorer에서
를 클릭한다.
16. Connection Name은 여러분이 임의로 입력한다. [Use custom connection settings] 체크박스를 선택하고 [TCP Connection] 라디오 박스를 선택하고 URI에는 위의 DOCKER_HOST 값을 입력하고 [Enable authentication] 체크박스를 선택한후 [Browse] 버튼을 선택하여 DOCKER_CERT_PATH의 .minikube 폴더를 선택한다. [Test Connection]을 클릭하면 연결을 테스트 할 수 있다.
17. 아래 그림과 같이 localhost가 아닌 우리가 생성한 Minikube Docker Repository의 Images 폴더에서 blog-app:latest와 mysql:latest 이미지를 생성한다.
![]()
이때 blog-app:latest 이미지를 생성할 때 Spring-Blog-Jpa의 application.properties 파일의 spring.datasource.url을 다음과 같이 localhost로 입력한다. 도커 이미지가 동일한 Pod안에 생성되면 localhost로 연결될 수 있다.
jdbc:mysql://localhost:3306/test?characterEncoding=utf8&serverTimezone=Asia/Seoul
18. minikube dashboard에서 다음의 yaml 파일을 생성하여 Kubernetes Pod를 생성할 수 있다.
apiVersion: v1
kind: Pod
metadata:
name: blog-system
spec:
containers:
- name: blog-app
image: blog-app:latest
imagePullPolicy: Never # 로컬에서 생성한 이미지를 호출하기 위해 imagePullPolicy를 Never로 설정한다.아니면 Docker Hub에서 이미지를 내려받으려 시도한다.
ports:
- containerPort: 8080
args: ["-t", "-i"]
link: blog-mysql
- name: blog-mysql
image: mysql:latest
env:
- name: MYSQL_ROOT_PASSWORD
value: password
- name: MYSQL_PASSWORD
value: password
- name: MYSQL_DATABASE
value: test
ports:
- containerPort: 3306
[출처] https://m.blog.naver.com/gladiator67/221804292859
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.



