쿠버네티스

쿠버네티스 서비스 타입? (ClusterIP, NodePort, LoadBalancer, ExternalName)

지나가는 지식들을 모아두기 2023. 9. 14. 15:11
728x90
300x250

쿠버네티스의 서비스 타입을 알아보기 전에, 쿠버네티스의 서비스가 무엇을 의미하는지부터 알아보겠습니다.

 

쿠버네티스에서의 서비스는 pod들을 통해 실행되고 있는 어플리케이션을 네트워크에 노출시키는 방법이라고 볼 수 있습니다.

예를 들어, pod가 다른 pod를 찾을 때, IP나 호스트 이름같은 경우는 pod의 일회성 특징 때문에 언제든지 사라질 수 있습니다. 그렇기에 변하지 않는 진입점인 서비스라는 것을 통하여 해결을 하게 되는겁니다.

 

이러한 서비스는 크게 3가지로 분류됩니다. (External Name은 제외하겠습니다)

1. Cluster IP

2. Node Port

3. Load Balancer

 

1. Cluster IP

-  pod들이 클러스터 내부의 다른 리소스들과 통신할 수 있도록 해주는 가상의 IP이며, 오직 클러스터 내부에서만 접근가능합니다.

- 외부 접근이 필요없는 형태인 경우 해당 방식으로 사용합니다.

- 예를 들면, 캐시 서버나, DB? 와 같은 내부 통신만 사용할때 주로 쓰이는 것 같습니다.

 

2. Node Port

- 외부에서 노드 IP의 특정 포트로 들어오는 것을 감지하여 해당 포트와 매칭되는 pod로 전달합니다.

- Node Port를 생성하면 쿠버네티스가 모든 노드에 특정 포트(모두 동일 번호)를 할당합니다.

- 각 노드의 포트로 서비스를 분기쳐주는 느낌인 것 같습니다.

 

3. Load Balancer

- Cloud LB가 외부에서 액세스가 가능 하면서, 자신의 IP를 갖고 리다이렉트 해줍니다.

- 이때 Node Port와 Cluster IP 역시 자동으로 생성됩니다.

- 다만 서비스 1개당 LB 1개 씩 필요합니다.

- 비용적으로 부담이 될 수 있습니다.

 

위 처럼 쿠버네티스에서는 서비스의 타입이 크게 3가지로 나뉘는데, 해당 서비스들만 사용하면 2% 모자란 느낌이 있습니다.

그렇기에 이를 아울러서 더 상위에서 관리할 수 있는 Ingress를 사용하는 것이 좋다고 생각합니다.

Ingress에 대해서는 다음 게시글에 작성하도록 하겠습니다.

 

혹시나 내용에 문제가 있거나, 잘못된 내용이 있다면 바로 수정하겠습니다.

감사합니다.

 

 

 

 

 

 

 

728x90
300x250