티스토리 뷰

728x90
반응형

 

 

[Kubernetes] 1. Ubuntu에 Kubernetes 설치하기

https://domdom.tistory.com/591

 

 

 

[Kubernetes] 2. Kubernetes 위에 hello kubernetes bootcamp! 프로젝트 배포해보기

 

 

 

1편에서 만들어놓았던 마스터노드와 워커노드입니다.

kubectl get 명령어를 통해 상태를 확인할 수 있습니다. 현재 아무런 Pod도 생성하지 않았으므로,

No resources found in default namespace. 메세지가 뜨고 있습니다.

kubectl get nodes
kubectl get pods

 

프로젝트 배포시에는 마스터 노드의 API Server에 kubectl 명령어를 통해 프로젝트를 배포할 수 있습니다.

# 생성
kubectl create
# 제거
kubectl delete
# 컨테이너에 명령
kubectl exec
....

 

구글의 hello kubernetes bootcamp! 예제 프로젝트를 배포해봅니다.

kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
# 확인
kubectl get deployments
kubectl get pods

 

생성한 pod 상태를 확인해보면 IP가 10.244.1.4로 설정된 것을 확인할 수 있습니다.

kubectl get pods -o wide

 

마스터노드 설정 시 --pod-network-cidr 옵션에 넣었던 10.244.0.0 IP는 마스터노드의 대역이고,

워커노드에서 ifconfig로 Flannel 네트워크 IP를 확인해보면 10.244.1.0 인 것으로 보아

워커노드의 Flannel 네트워크 대역대는 10.244.1.xxx... 이고, 워커노드에 Pod가 생성된 것을 확인할 수 있습니다.

 

 

마스터노드와 워커노드의 Flannel IP 대역

 

워커노드에서 curl 명령어를 통해 출력해볼 수는 있지만,

현재 외부에서는 접속할 수 없습니다.

# 워커노드에서 확인
curl http://10.244.1.4:8080

# 마스터노드에서 확인
kubectl get service

 

 

외부에서 접속가능하게 하려면, Pod에 고정 포트인 NodePort를 설정해주어야 합니다.

먼저 Pod의 이름을 확인합니다. (kubernetes-bootcamp-5485cc6795-xbwpj)

kubectl get pods

 

kubectl expose pod {pod 이름} --type=NodePort --port={port} 명령어를 통해 고정 port를 지정합니다.

포트를 고정해주고 service를 다시 확인해보면, 8080포트가 외부 32520 포트와 연결된 것을 확인할 수 있습니다.

Kubernetes의 NodePort 기본 포트 범위는 30000 ~ 32767 입니다.

30000 ~ 32767 구간인 이유는, 호스트 시스템 네트워크의 다른 항목과의 충돌을 피하기 위해 선택되었다고 하네요!

kubectl expose pod kubernetes-bootcamp-5485cc6795-xbwpj --type=NodePort --port=8080

 

 

이제 외부에서도 Pod 프로젝트에 접속할 수 있게 되었습니다!

접속링크는 http://{워커노드의 공인 IP}:{NodePort} 입니다.

 

 

 

다음 장에서는 서비스메시 Istio, 이해하고 연동하기 작업을 진행해볼 예정입니다.

https://domdom.tistory.com/598

 

728x90
반응형
댓글