Service
Kubernetes에 존재하는 세 가지 타입의 서비스를 알아보겠다.
- ClusterIP
- NodePort
- Load Balancer
1. ClusterIP
서비스는 기본적으로 자신의 ClusterIP를 가지고 있다.
Pod에 서비스를 연결시켜두면 Service IP를 통해 Pod에 접근이 가능하다.
Pod에도 IP가 할당되어 있는데 Service IP를 이용해 접근하는 이유는, 앞선 Pod에서도 설명했듯이,
Pod는 쿠버네티스에서 시스템, 성능 장애로 인해 언제든지 죽을 수 있으며, 재생성될 떄 IP가 변하는 휘발성 IP를 가지고 있다.
반면, Cluster IP로 할당된 IP는 변하지 않기 때문에 Service IP로 접근하게 되면 항상 연결된 Pod에 접근할 수 있다.
서비스를 만들 때 타입을 지정하지 않으면 타입은 자동으로 Cluster IP로 설정된다.
Cluster IP는 두 가지 특징을 가지고 있는데
- Cluster IP 내에서만 접근이 가능하며 외부에서는 접근이 불가능.
- 한 서비스에서는 여러개의 Pod를 연결할 수 있으며, 트래픽을 분산하여 Pod에 전달.
즉 인가된 사람 (Admin)이 접근하기 위한 서비스로 생각할 수 있겠다.
이러한 Cluster IP의 주된 사용처는 Kubernetes의 대시보드를 관리하고자 할 때 사용한다.
2. NodePort
NodePort는 기본적으로 Cluster IP와 같은 기능을 포함하고 있다.
이 타입의 큰 특징은 Kubernetes Cluster에 연결된 모든 노드에 같은 포트가 할당이 되어, 외부로부터 어느 노드건 간에 해당 IP의 포트로 접속하면 서비스에 연결할 수 있다. 서비스는 이후 자신에게 연결된 Pod에 트래픽을 전달해준다. (30000~32767 포트를 사용)
각 노드에 Pod가 하나씩 올라가 있고 1번 노드의 IP로 접근을 하더라도 서비스는 2번 노드의 Pod에게 트래픽을 전달해 줄 수 있다.
이러한 NodePort는 주로 일시적인 외부 연동용으로 사용하곤 하는데, 내부환경에서 시스템을 개발하다가 외부에 데모를 보여줄 경우 사용할 수 있다.
3. Load Balancer
Load Balancer는 기본적으로 NodePort의 성격을 그대로 가지고 있으며, 각각 노드에 트래픽을 분산시켜준다.
Load Balancer의 IP 주소는 기본 Kubernetes의 경우 별도로 외부접속 IP를 할당해주는 플러그인을 설치해서 사용한다. (AWS의 EKS 등은 플러그인이 자동으로 포함되어 바로 사용할 수 있다.)
Load Balancer의 경우 실질적으로 외부에 서비스를 노출시키기 위해 사용되며, 내부 IP를 노출시키지 않고 외부 IP를 통해 안정적으로 서비스를 노출시키는 용도로 사용한다.
'Cloud Computing > Kubernetes' 카테고리의 다른 글
Kubernetes Object - ConfigMap, Secret (0) | 2021.01.13 |
---|---|
Kubernetes Object - Volume (0) | 2021.01.12 |
Kubernetes Object - Pod, Label, Node Schedule (0) | 2021.01.12 |
Kubernetes 시작하기 (0) | 2021.01.11 |
Kubernetes 환경 세팅 (0) | 2021.01.07 |