본문 바로가기
[Kubernetes]

[k8s] kubernetes의 Service가 무엇인가?

by METAVERSE STORY 2022. 11. 22.
반응형

 

 

Service란 무엇인가?

저번 게시물에서는 파드에 대해서 다루었다. Service또한 Pod만큼 중요한 쿠버네티스의 기본 리소스이다.

우리가 전에 생성하고 배포한 Pod는 실행 중인 작업자 Node에서만 액세스 할 수 있다. 그리고 Service를 통해 노출될 때까지 kubernetes Master Node나 다른 Node에서도 액세스 할 수 없다. 각 Pod는 로컬호스트에서만 CNI 플러그인을 통해 IP 주소를 얻기 때문이다. 

네트워크를 통해서 애플리케이션에 액세스하려면 위 그림처럼 Kubernetes Service를 사용하여 Pod를 외부 트래픽에 노출하고 여러 Pod에서 트래픽을 로드밸런싱 해야 한다. 

 

 

 

외부 접속 설정

외부 접속 설정을 하는 서비스 타입에는 위 그림과 같이 총 4가지가 존재한다. 

 

 

 

먼저 Cluster IP이다. ClusterIP는 외부 트래픽이 아닌 서비스를 통한 Cluster 내 내부 통신에만 사용되는 기본 IP이다.
프런트앤드 및 백앤드 서비스와 같은 아키텍쳐를 계획할 때 유용하다. 백엔드 Pod에 대해 이 클러스터 IP를 사용하는 것이 좋다. 외부에 노출되지 않은 Pod와 같기 때문이다.

 

 

 

 

 

NodePort 유형은 동일한 대상 포트를 사용하여 pod를 외부 네트워크에 노출하므로 사용자는 작업자 Node IP 및 노출된 포트를 사용하여 액세스할 수 있다. 트래픽은 서비스를 통해 각 Pod로 전송된다.

 

 

 

이 로드밸런서 유형은 클라우드상에서 존재하는 로드밸런서에 연결하고자 할 때 사용하는 서비스 타입이다.
만약 쿠버네티스 클러스터 환경이 구글 클라우드나 AWS와 같은 클라우드 제공자이며, 로드밸런서를 사용한다면 External IP를 얻게 된다.
이 External iP를 사용해 요청을 파드에 전달하고 응용 프로그램에 액세스 할 수 있다. 하지만 요금이 부과된다. 

 

 

 

ExternalName은 외부 DNS 이름을 정의하는데 사용된다. 클러스터 외부에 있는 다른 애플리케이션에 액세스해야 하는 프론트엔드 Pod가 클러스터에 있다고 가정하면 이 서비스를 사용할 수 있다. 데이터베이스 서비스가 외부에서 호스트되며 클러스터 내에서 액세스 하려는 경우 사용된다. 

 

 

 

 


실습하기

 

 

먼저 namespace를 새로 만들어 준다. 현재 이 가상머신 안에 이미 prometheus가 돌아가고 있기 때문에 혼돈을 줄이기 위해서는 네임스페이스를 새로 생성한 후 논리적으로 분리해야 관리가 편하다.

 

 

 

먼저 Pod 하나를 생성 해 준다. 

이를 외부로 노출 시켜 줄 것이 Service이다. 

 

 

 

yaml을 작성한 후 서비스를 실행 해 보니 잘 되는 것을 확인 할 수 있다. 

 

 

 

 

마지막으로 포트 포워딩을 진행한다. 

 

 

 

 

포트 포워딩 후 접속해보니 잘 접속이 되는 것을 확인할 수 있다. 

 

 

 

참조 문서

Kubernetes Services Explained with Examples (learnitguide.net)

 

Kubernetes Services Explained with Examples

Kubernetes services explained, Kubernetes service basics, Kubernetes service concepts, understanding Kubernetes service, kubernetes service examples

www.learnitguide.net

[Kubernetes] 6. 쿠버네티스 Service란? (NodePort, nginx 실습) (tistory.com)

 

[Kubernetes] 6. 쿠버네티스 Service란? (NodePort, nginx 실습)

[주의] 개인 공부를 위해 쓴 글이기 때문에 주관적인 내용은 물론, 쓰여진 정보가 틀린 것일 수도 있습니다! 피드백 부탁드립니다. (- -)(_ _) 꾸벅 [ Service ] 위 그림을 보면, 10.10.10.2의 내부 아이피

yoonchang.tistory.com

[Kubernetes] Expose App (Service 생성) (chhanz.github.io)

 

[Kubernetes] Expose App (Service 생성)

목차 Build APP - Container image Deploy APP Build APP Create The Deployment Check APP Check The Node Check The APP Expose APP Expose APP - NodePort Scale APP Scale APP Update APP Update APP - Rolling Update/Rollback Expose APP 이 문서는 Service 생

chhanz.github.io

 

반응형

댓글