만자의 개발일지

[Kubernetes] 서비스(Service)의 유형 본문

Kubernetes

[Kubernetes] 서비스(Service)의 유형

박만자 2022. 7. 19. 15:46

서비스(Service)란?

쿠버네티스에서 서비스는 라벨링을 통해  같은 라벨을 가진 Pod를 묶어 단일 엔드포인트를 제공해주는 기능입니다.

클러스터 내부에서 실행되는 Pod들은 언제든지 삭제됬다 생성될 수 있는 반 영속적인 특성을 지니고 있는데, Pod가 생성될 때마다 새로운 내부 IP를 할당하게 되므로, 클러스터 내/외부와 통신을 계속 유지하기 어렵습니다. 따라서 쿠버네티스는 서비스에 고정적인 IP를 할당해 Pod가 외부와의 통신을 계속 유지할 수 있도록해줍니다.

자세한 내용은 아래 글을 참고하시길 바랍니다.

https://yoo11052.tistory.com/189

 

[Kubernetes] Kubernetes Object란

Kubernetes Object 쿠버네티스를 이해하기 위해서는 오브젝트에 대해 제대로 이해하고 넘어가야합니다. 쿠버네티스에서 오브젝트란 쿠버네티스를 구성하는 단위로, 가장 기본적인 구성단위인 기본

yoo11052.tistory.com

 

서비스의 유형

서비스에는 4가지 유형이 있습니다.

  • ClusterIP(Default)
  • NodePort
  • LoadBalancer
  • ExternalName

 

ClusterIP

ClusterIP는 서비스의 기본 유형으로, Pod가 클러스터 내부의 다른 리소스들과 통실할 수 있도록 해주는 가상의 클러스터 전용 IP입니다. ClusterIP는 클러스터 내부 트래픽을 해당 Pod의 <Cluster 내부 IP>:<targetPort>로 넘겨주고, 오직 클러스터 내부에서만 접근 가능합니다. ClusterIP는 내부에 새로운 IP를 할당하고 여러 개의 Pod를 바라보는 로드밸런서 기능을 제공합니다.

 

 

NodePort

NodePort는 외부에서 노드 IP의 특정 포트로 들어오는 요청을 감지하여, 해당 포트와 연결된 Pod로 트래픽을 전달하는 유형의 서비스입니다. NodePort를 통해 클러스터 내부로 들어온 트래픽을 특정 Pod로 전달하기 위해 ClusterIP를 자동으로 생성합니다.

NodePort는 클러스터의 모든 노드에 포트를 오픈하기 때문에 다음과 같이 Pod가 하나의 노드에만 있어도 다른 노드에서 접근할 수 있습니다.

 

LoadBalancer

LoadBalancer는 AWS, Azure, GCP같은 실제 클라우드 서비스에서 제공하는 외부 로드 밸런서를 프로비저닝할 수 있습니다. NodePort의 경우 노드가 사라졌을 때 자동으로 다른 노드를 통해 접근이 불가능합니다. 쉽게 말해 다른 노드로 연결해도 NodePort에 접근할 수는 있지만, 어떤 노드가 살아 있는지는 알 수가 없습니다. 이 경우 LoadBalancer를 사용하면 LoadBalancer가 살아있는 노드를 자동으로 바라보고 있고, LoadBalancer에 요청을 보내면 LoadBalancer에 연결되있는 노드에 자동으로 트래픽을 분산시켜 NodePort의 단점을 없앨 수 있습니다.

 

ExternalName

ExtrernalName은 외부 서비스를 클러스터 내부에서 호출하고자 할 때 사용합니다. 서비스에 DNS Name을 직접 명시하면 서비스로 들어오는 모든 요청을 해당 DNS로 포워딩 해줍니다. 

 

참고

'Kubernetes' 카테고리의 다른 글

[Kubernetes] Endpoints란  (1) 2022.07.20
[Kubernetes] 서비스(Service) 구성 및 생성하기  (0) 2022.07.20
[Kubernetes] Pod 구성 및 생성하기  (0) 2022.07.19
[Kubernetes] Kubernetes Object란  (1) 2022.07.14
[Kubernetes] Kubernetes란  (0) 2022.07.11
Comments