Docker, Kubernetes

[Kubernetes] 쿠버네티스의 서비스 종류 (4개)

15호의 개발자 2021. 12. 3. 14:32
반응형

[Kubernetes] 쿠버네티스의 서비스 종류 (4개)

 

 

 

Kubernetes의 Service란?

쿠버네티스의 Service란 Pod의 집합을 의미한다.

 

Pod는 클러스터 내에서 유동적이므로 접속 정보가 일정하지 않다. 따라서 Pod 접속을 안정적으로 유지하기 위해 Service를 이용한다. 쿠버네티스 외부에서 내부로 접속할 때, 내부가 어떤 구조로 되어 있는지, 파드가 살았는지 죽었는지 신경 쓰지 않아도 Service가 이를 연결해주는 역할을 한다.


기존 인프라에서 Load Balancer, Gateway와 비슷한 역할을 한다.




Kubernetes의 Service 종류 (Service Types)

쿠버네티스에서의 서비스는, 클러스터 외부에 서비스를 어떻게 노출(expose)하는지에 따라 크게 4가지로 구별한다.

 

 

  • ClusterIP (default)

cluster 내부에서만 접근 가능한 service를 expose한다.

 

 

  • NodePort

NodePort란 각 cluster node 위의 open port를 의미하며, 고정 포트로 각 노드의 IP에 서비스를 expose한다.

 

NodePort service를 사용할 때는 선택한 포트가 노드에서 이미 열려 있지 않은지 확인해야 한다.

 

<NodeIP>:<NodePort>를 요청하여 클러스터 외부에서 NodePort 서비스에 접속할 수 있다.

 

쿠버네티스는 service가 해당 node에서 동작하지 않고 있어도, NodePort로 들어오는 트래픽을 service로 보낸다.

 

NodePort는 다른 더 높은 수준의 ingress 메소드(ex. load balancer)를 위한 기반으로 만들어진 것이다.

 

 

  • LoadBalancer

클라우드 공급자(ex. AWS나 Azure)의 load balancer를 사용하여 service를 외부에 expose한다. 이렇게 하면 클러스터 외부에서 내부에 액세스할 수 있는 IP 주소, DNS 네임이 생성된다.

 

LoadBalancer에서는 deployment의 replica에 우선순위를 결정할 수 있다.

 

 

  • ExternalName

ExternalName Service는 다른 쿠버네티스 service들과 비슷하지만 clusterIP를 통해 접근한다는 차이점이 있다.

 

일반적인 selector(ex. my-service)가 아닌 DNS name(ex. foo.bar.example.com)에 매핑된다. (spec.externalName parameter에서 CNAME 지정)

 

 


(참고 링크)

1.
https://www.bluematador.com/blog/an-introduction-to-kubernetes-services#:~:text=Types%20of%20services%20in%20Kubernetes

2.
https://www.vmware.com/topics/glossary/content/kubernetes-services#:~:text=What%20are%20the%20types%20of%20Kubernetes%20services%3F

 

 

 

반응형