[k8s] Kubernetes 서비스 타입 (ClusterIP, NodePort, LoadBalancer, ExternalName)


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


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

예를 들어, pod가 다른 pod를 찾을 때, IP나 호스트 이름같은 경우는 pod의 일회성 특징 때문에 언제든지 사라질 수 있다.

그렇기에 변하지 않는 진입점인 서비스라는 것을 통하여 해결을 하게 된다.


Cluster IP

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

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

– 예를 들면, 캐시 서버나, DB? 와 같은 내부 통신만 사용할때 주로 쓰인다.

Node Port

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

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

– 각 노드의 포트로 서비스를 분기시켜준다.

Load Balancer

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

– 이때 Node Port와 Cluster IP 역시 자동으로 생성된다.

– 다만 서비스 1개당 LB 1개 씩 필요하다.

– 비용적으로 부담이 될 수 있다.



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

감사합니다.