개요
로컬 상에서 미니쿠베를 이용하여 간단한 애플리케이션을 구동한다.
minikube
윈도우, 맥, 리눅스의 로컬환경에서 빠르게 k8s 환경을 구축할 수 있도록 해준다. 일반적인 개발 워크플로우 및 k8s 이해를 돕기위해서 로컬환경에서 k8s 실행을 돕는다.
설치
우선 미니쿠베를 설치한다. 설치는 여기를 보고 수행한다.
- 미니쿠베 윈도우 인스톨러
- CLI 환경에서 minikube start 하니 아래와 같은 메시지 출력
- 현재 pc 가 hyper-v 가 동작중이기 때문에, 64 bit vm 을 부팅하지 않는다고 한다. 참고로 미니쿠베의 경우 vm 으로 동작한다.
따라서 제어판에 들어가 hyper-v 체크박스를 해제할 필요가 있다.
- 제어판 > 프로그램 > windows 기능 켜기/끄기
해제하고, 이후에 pc 다시시작한다. 그리고 minikube start 를 하면 설치가 잘 되는 것을 확인할 수 있다.
C:\Windows\system32>minikube status
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
timeToStop: Nonexistent
C:\Windows\system32>minikube version
minikube version: v1.18.1
commit: 09ee84d530de4a92f00f1c5dbc34cead092b95bc
클러스터와 상호작용
미니쿠베는 클러스터에 대한 웹 ui 를 제공해주고 있다.
C:\Windows\system32>minikube dashboard
* 대시보드를 활성화하는 중 ...
- Using image kubernetesui/dashboard:v2.1.0
- Using image kubernetesui/metrics-scraper:v1.0.4
* Verifying dashboard health ...
* 프록시를 시작하는 중 ...
* Verifying proxy health ...
* Opening http://127.0.0.1:10234/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
애플리케이션 배포
- deployment 오브젝트 생성
- 생성된 deployment 오브젝트 expose 8080 포트 수행 및 type NodePort 설정
- type 을 NodePort 를 이용하여 파드를 외부로 노출시킴
- 하지만 사실 NodePort 를 외부로 노출하는 경우는 드물다고 한다. 일반적으로 인그레스 오브젝트를 이용하여 외부로 노출하는 경우가 있다.
- services 목록 조회
C:\Windows\system32>kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4
deployment.apps/hello-minikube created
C:\Windows\system32>kubectl expose deployment hello-minikube --type=NodePort --port=8080
service/hello-minikube exposed
C:\Windows\system32>kubectl get services hello-minikube
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-minikube NodePort 10.103.46.123 <none> 8080:31136/TCP 50s
미니쿠베를 이용하면 해당 HTTP 엔드포인트를 브라우저에 쉽게 노출할 수 있다.
C:\Windows\system32>minikube service hello-minikube
|-----------|----------------|-------------|-----------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|----------------|-------------|-----------------------------|
| default | hello-minikube | 8080 | http://172.31.225.118:31136 |
|-----------|----------------|-------------|-----------------------------|
* Opening service default/hello-minikube in default browser...
minikube dashboard 에도 내가 생성한 파드가 조회되는 것을 확인할 수 있다.
port-forward 명령어를 통해서 손쉽게 hello-minikube 파드의 외부 노출된 포트를 다른 값으로 라우팅할 수 있다. 이래의 명령어 입력이후에 localhost:7080 을 수행하면 위와 같은 http endpoint 화면이 노출되는 것을 확인할 수 있다.
C:\Windows\system32>kubectl port-forward service/hello-minikube 7080:8080
Forwarding from 127.0.0.1:7080 -> 8080
Forwarding from [::1]:7080 -> 8080
Handling connection for 7080
클러스터 관리
배포된 애플리케이션에 영향을 주지않고, k8s 를 중지하고 클러스터를 멈춘다. (pause k8s -> halt the cluster) 마지막으로 미니쿠베의 모든 클러스터를 삭제한다.
C:\Windows\system32>minikube pause
* Pausing node minikube ...
* Paused 18 containers in: kube-system, kubernetes-dashboard, storage-gluster, istio-operator
C:\Windows\system32>minikube stop
* Stopping node "minikube" ...
* Powering off "minikube" via SSH ...
* 1개의 노드가 중지되었습니다.
C:\Windows\system32>minikube delete --all
* Stopping node "minikube" ...
* hyperv 의 "minikube" 를 삭제하는 중 ...
* "minikube" 클러스터 관련 정보가 모두 삭제되었습니다
* 모든 프로필이 성공적으로 삭제되었습니다
reference
'인프라 관련' 카테고리의 다른 글
20210117 Virtualization (가상화) (0) | 2021.01.17 |
---|---|
20210116 Hypervisors (하이퍼바이저) (0) | 2021.01.16 |
20200614 [docker] 도커 ZeroToALL 개념 및 커맨드. (0) | 2020.07.19 |
20200226 [docker] docker 윈도우 설치 및 스프링 부트 도커라이징 (0) | 2020.02.26 |
20180627 GCP 06 : SDK For Window & Google Cloud Tools for Eclipse Plugin (0) | 2018.06.27 |