디플로이먼트 만들기
쿠버네티스 파드는 관리와 네트워킹 목적으로 함께 묶여 있는 하나 이상의 컨테이너 그룹이다. 이 튜토리얼의 파드에는 단 하나의 컨테이너만 있다. 쿠버네티스 디플로이먼트는 파드의 헬스를 검사해서 파드의 컨테이너가 종료되었다면 재시작해준다. 파드의 생성 및 스케일링을 관리하는 방법으로 디플로이먼트를 권장한다.
1. kubectl create 명령어를 실행하여 파드를 관리할 디플로이먼트를 만든다. 이 파드는 제공된 Docker 이미지를 기반으로 한 컨테이너를 실행한다.
$ kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
deployment.apps/hello-node created
2. 디플로이먼트 보기
$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 12m
3. 파드 보기
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-node-7dc7987866-d2zsg 1/1 Running 0 26m
4. 클러스터 이벤트 보기
$ kubectl get events
LAST SEEN TYPE REASON OBJECT MESSAGE
27m Normal Scheduled pod/hello-node-7dc7987866-d2zsg Successfully assigned default/hello-node-7dc7987866-d2zsg to minikube
27m Normal Pulling pod/hello-node-7dc7987866-d2zsg Pulling image "k8s.gcr.io/echoserver:1.4"
27m Normal Pulled pod/hello-node-7dc7987866-d2zsg Successfully pulled image "k8s.gcr.io/echoserver:1.4"
27m Normal Created pod/hello-node-7dc7987866-d2zsg Created container echoserver
27m Normal Started pod/hello-node-7dc7987866-d2zsg Started container echoserver
27m Normal SuccessfulCreate replicaset/hello-node-7dc7987866 Created pod: hello-node-7dc7987866-d2zsg
27m Normal ScalingReplicaSet deployment/hello-node Scaled up replica set hello-node-7dc7987866 to 1
31m Normal NodeHasSufficientMemory node/minikube Node minikube status is now: NodeHasSufficientMemory
31m Normal NodeHasNoDiskPressure node/minikube Node minikube status is now: NodeHasNoDiskPressure
서비스 만들기
기본적으로 파드는 쿠버네티스 클러스터 내부의 IP주소로만 접근할 수 있다. hello-node 컨테이너를 쿠버네티스 가상 네트워크 외부에서 접근하려면 파드를 쿠버네티스 서비스로 노출해야 한다.
1. kubectl expose 명령어로 퍼블릭 인터넷에 파드 노출하기
$ kubectl expose deployment hello-node --type-LoadBalancer --port=8080
service/hello-node exposed
- --type=LoadBalancer 플래그는 클러스터 밖의 서비스로 노출하기 원한다는 뜻이다.
- k8s.gcr.io/echoserver 이미지 내의 애플리케이션 코드는 TCP 포트 8080에서만 수신한다. kubectl expose를 사용하여 다른 포트를 노출한 경우, 클라이언트는 다른 포트에 연결할 수 없다.
2. 방금 생성한 서비스 살펴보기
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.100.213.192 <pending> 8080:30456/TCP 9m36s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 20m
로드 밸런서를 지원하는 클라우드 공급자의 경우에는 서비스에 접근할 수 있도록 외부 IP 주소가 프로비저닝 한다. minikube에서 LoadBalancer 타입은 minikube service 명령어를 통해서 해당 서비스를 접근할 수 있게 한다.
3. 다음 명령어를 실행한다.
$ minikube service hello-node
|-----------|------------|-------------|--------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|------------|-------------|--------------------------|
| default | hello-node | | http://172.17.0.69:31746 |
|-----------|------------|-------------|--------------------------|
* Opening service default/hello-node in default browser...
Minikube Dashboard is not supported via the interactive terminal experience.
Please click the 'Preview Port 30000' link above to access the dashboard.
This will now exit. Please continue with the rest of the tutorial.
*
X open url failed: http://172.17.0.69:31746: exit status 1
*
* minikube is exiting due to an error. If the above message is not useful, open an issue:
- https://github.com/kubernetes/minikube/issues/new/choose
'Cloud > Kubernetes' 카테고리의 다른 글
[Kubernetes] 도커 쿠버네티스 설치 (0) | 2021.12.06 |
---|---|
[kubernetes] 설치없이 쿠버네티스 사용하기 (0) | 2021.12.06 |
[Kubernetes] Kubernetes 소개 (0) | 2021.12.05 |
[Kubernetes] 2.1 클러스터 생성하기 (0) | 2021.02.02 |
[Docker] How to install Docker on CentOS 7 (0) | 2021.01.31 |