포드를 외부로 노출해 사용자들이 접근하거나, 다른 디플로이먼트의 포드들이 내부적으로 접근하려면 서비스(service)라고 부르는 별도의 쿠버네티스 오브젝트를 생성해야한다. 서비스의 핵심 기능으로는 여러 개의 포드에 쉽게 접근할 수 있도록 고유한 도메인 이름을 부여하고, 포드에 대한 요청을 분산하는 로드밸런서 기능을 하며 포드를 외부에 노출시킨다.
서비스를 종류별로 생성하여 포드와 연결하고 포드에 접근하는 과정을 살펴보자
사전 설정
1. 디플로이먼트 생성을 위한 YAML파일 작성
2. 디플로이먼트 생성
# kubectl apply -f <YAML파일명>
ClusterIP 타입의 서비스
쿠버네티스 내부에서만 포드들에 접근할 때 사용하고 외부로 포드를 노출하지 않는다
YAML파일 작성
ClusterIP 타입의 서비스는 고유한 IP를 할당받게 되는데, 이 IP는 클러스터 내부에서만 사용할 수 있는 IP로, 이 IP를 통해 서비스에 연결된 포드에 접근할 수 있다
ClusterIP 타입의 서비스 생성
# kubectl apply -f <YAML파일명>
서비스에 연결된 포드 접근
# curl 클러스터 IP:서비스IP에 접근할 때 사용할 포트번호
서비스의 IP와 포트를 통해 포드에 접근할 수 있음을 볼 수 있다
NodePort 타입의 서비스
포드에 접근할 수 있는 포트를 클러스터의 모든 노드에 동일하게 개방하고 외부에서 포드에 접근할 수 있는 서비스이다
YAML파일 작성
Cluster IP 타입의 서비스 생성을 위해 작성한 YAML파일과 비교했을 때 "type" 항목을 NodePort로 설정한 점을 제외하고는 모두 동일하다
NodePort 타입의 서비스 생성
# kubectl apply -f <YAML파일명>
서비스 목록을 보면 NodePort 타입의 서비스 "PORT(S)"에 30637이라는 숫자가 있는 것을 볼 수 있는데, 이 숫자는 모든 노드에서 동일하게 접근할 수 있는 포트를 의미한다. 즉 클러스터의 모든 노드에 내부IP 또는 외부IP를 통해 30637 포트로 접근하면 동일한 서비스에 연결할 수 있다
포드 접근 확인(내부IP)
모든 노드에서 내부IP로 포드에 접근할 수 있는지 확인해보자
# kubectl get nodes -o wide
# curl 10.17.0.114:30637
# curl 10.17.0.139:30637
포드 접근 확인(외부IP)
모든 노드에서 외부IP로 포드에 접근할 수 있는지 확인해보자
# curl 52.79.169.208:30637
# curl 52.79.212.252:30637
'쿠버네티스' 카테고리의 다른 글
쿠버네티스 컨피그맵 설정값을 포드에 전달하기 + 파일로부터 컨피그맵 생성 (0) | 2021.05.07 |
---|---|
쿠버네티스 인그레스(Ingress) 생성 + SSL/TLS 보안 연결 (0) | 2021.05.03 |
kops를 이용해 AWS에 쿠버네티스 설치 (0) | 2021.04.28 |
쿠버네티스 디플로이먼트(Delpoyment) 사용하기 (0) | 2021.04.27 |
구글 클라우드(GCP)에 쿠버네티스 연동하기 (0) | 2021.04.26 |