이 튜토리얼에서는 Minikube와 Katacoda를 이용하여 쿠버네티스에서 Node.js 로 작성된 간단한 Hello World 애플리케이션을 어떻게 실행하는지 살펴본다. Katacode는 무료로 브라우저에서 쿠버네티스 환경을 제공한다.
참고: 로컬에서 Minikube를 설치했다면 이 튜토리얼도 따라 할 수 있다.
이 튜토리얼에서 아래 파일들을 빌드한 컨테이너 이미지를 제공한다.
minikube/server.js
|
|---|
|
minikube/Dockerfile
|
|---|
|
docker build명령에 대한 자세한 설명은 Docker 문서를 읽어보자.
Launch Terminal 을 클릭
참고: Minikube를 로컬에 설치했다면minikube start을 실행한다.
브라우저에서 쿠버네티스 대시보드를 열어보자.
minikube dashboardKatacoda 환경에서는: 터미널 패널의 상단에서 플러스를 클릭하고, 이어서 Select port to view on Host 1를 클릭
Katacoda 환경에서는: 30000 을 입력하고 Display Port을 클릭.
쿠버네티스 파드는 관리와 네트워킹 목적으로 함께 묶여 있는 하나 이상의 컨테이너 그룹이다. 이 튜토리얼의 파드에는 단 하나의 컨테이너만 있다. 쿠버네티스 디플로이먼트는 파드의 헬스를 검사해서 파드의 컨테이너가 종료되었다면 재시작해준다. 파드의 생성 및 스케일링을 관리하는 방법으로 디플로이먼트를 권장한다.
kubectl create 명령어를 실행하여 파드를 관리할 디플로이먼트를 만든다. 이
파드는 제공된 Docker 이미지를 기반으로 한 컨테이너를 실행한다.
kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node디플로이먼트 보기
kubectl get deployments다음과 유사하게 출력된다.
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 1m
파드 보기
kubectl get pods다음과 유사하게 출력된다.
NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
클러스터 이벤트 보기
kubectl get eventskubectl 환경설정 보기
kubectl config view참고:kubectl명령어에 관해 자세히 알기 원하면 kubectl 개관을 살펴보자.
기본적으로 파드는 쿠버네티스 클러스터 내부의 IP 주소로만
접근할 수 있다. hello-node 컨테이너를 쿠버네티스 가상 네트워크
외부에서 접근하려면 파드를 쿠버네티스
서비스로 노출해야 한다.
kubectl expose 명령어로 퍼블릭 인터넷에 파드 노출하기
kubectl expose deployment hello-node --type=LoadBalancer --port=8080--type=LoadBalancer플래그는 클러스터 밖의 서비스로 노출하기
원한다는 뜻이다.
방금 생성한 서비스 살펴보기
kubectl get services다음과 유사하게 출력된다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.108.144.78 <pending> 8080:30369/TCP 21s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m
로드 밸런서를 지원하는 클라우드 공급자의 경우에는
서비스에 접근할 수 있도록 외부 IP 주소가 프로비저닝 한다.
Minikube에서 LoadBalancer타입은 minikube service 명령어를 통해서 해당 서비스를 접근할 수
있게 한다.
다음 명령어를 실행한다
minikube service hello-nodeKatacoda 환경에서만: 플러스를 클릭한 후에 Select port to view on Host 1 를 클릭.
Katacoda 환경에서만: 서비스 출력에서 8080의 반대편에 표시되는 5자리 포트 번호를 기록 한다. 이 포트 번호는 무작위로 생성되며, 사용자마다 다를 수 있다. 포트 번호 텍스트 상자에 포트 번호를 입력한 다음, 포트 표시를 클릭한다. 이전 예시를 사용해서 30369 를 입력한다.
이렇게 하면 당신의 앱을 서비스하는 브라우저 윈도우를 띄우고 “Hello World” 메시지를 보여준다.
Minikube에는 활성화하거나 비활성화 할 수 있고 로컬 쿠버네티스 환경에서 접속해 볼 수 있는 내장 애드온Resources that extend the functionality of Kubernetes. 셋이 있다.
현재 지원하는 애드온 목록을 확인한다.
minikube addons list다음과 유사하게 출력된다.
addon-manager: enabled
dashboard: enabled
default-storageclass: enabled
efk: disabled
freshpod: disabled
gvisor: disabled
helm-tiller: disabled
ingress: disabled
ingress-dns: disabled
logviewer: disabled
metrics-server: disabled
nvidia-driver-installer: disabled
nvidia-gpu-device-plugin: disabled
registry: disabled
registry-creds: disabled
storage-provisioner: enabled
storage-provisioner-gluster: disabled
한 애드온을 활성화 한다. 예를 들어 metrics-server
minikube addons enable metrics-server다음과 유사하게 출력된다.
metrics-server was successfully enabled
방금 생성한 파드와 서비스를 확인한다.
kubectl get pod,svc -n kube-system다음과 유사하게 출력된다.
NAME READY STATUS RESTARTS AGE
pod/coredns-5644d7b6d9-mh9ll 1/1 Running 0 34m
pod/coredns-5644d7b6d9-pqd2t 1/1 Running 0 34m
pod/metrics-server-67fb648c5 1/1 Running 0 26s
pod/etcd-minikube 1/1 Running 0 34m
pod/influxdb-grafana-b29w8 2/2 Running 0 26s
pod/kube-addon-manager-minikube 1/1 Running 0 34m
pod/kube-apiserver-minikube 1/1 Running 0 34m
pod/kube-controller-manager-minikube 1/1 Running 0 34m
pod/kube-proxy-rnlps 1/1 Running 0 34m
pod/kube-scheduler-minikube 1/1 Running 0 34m
pod/storage-provisioner 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/metrics-server ClusterIP 10.96.241.45 <none> 80/TCP 26s
service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 34m
service/monitoring-grafana NodePort 10.99.24.54 <none> 80:30002/TCP 26s
service/monitoring-influxdb ClusterIP 10.111.169.94 <none> 8083/TCP,8086/TCP 26smetrics-server 비활성화
minikube addons disable metrics-server다음과 유사하게 출력된다.
metrics-server was successfully disabled
이제 클러스터에서 만들어진 리소스를 제거할 수 있다.
kubectl delete service hello-node
kubectl delete deployment hello-node필요하면 Minikube 가상 머신(VM)을 정지한다.
minikube stop필요하면 minikube VM을 삭제한다.
minikube delete이 페이지가 도움이 되었나요?
피드백 감사합니다. 쿠버네티스 사용 방법에 대해서 구체적이고 답변 가능한 질문이 있다면, 다음 링크에서 질문하십시오. Stack Overflow. 원한다면 GitHub 리포지터리에 이슈를 열어서 문제 리포트 또는 개선 제안이 가능합니다..