개요

로컬 상에서 미니쿠베를 이용하여 간단한 애플리케이션을 구동한다.

 

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...

 

로컬환경에 뜬 minikube dashboard 환경

 

 

애플리케이션 배포

  • 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

Posted by doubler
,