728x90
반응형
쿠버네티스 서비스란?
쿠버네티스에서 서비스(Service)는 파드를 관리하는 일종의 추상화 레이어이다. 파드는 클러스터 내에서 다양한 워커 노드에 분산되어 실행될 수 있으며, 문제가 발생하면 다른 노드에서 다시 생성되기도 한다. 이렇게 파드의 위치나 IP 주소가 자주 변하는 상황에서, 고정된 주소로 파드에 접근하기 위해 서비스가 사용된다. 서비스는 파드가 어디에 있든지 상관없이 일관된 네트워크 접근을 제공하며, 필요에 따라 클러스터 외부에서도 접근할 수 있는 기능을 지원합니다.
왜 서비스가 필요할까?
- 파드의 IP는 동적으로 변경된다: 파드는 클러스터 내에서 주기적으로 생성되고 삭제될 수 있다. 특히 파드가 실행중인 워커 노드에 문제가 생기면 다른 노드에서 새로운 파드가 생성되고, 이 과정에서 파드의 IP 주소가 변경된다. 이런 변화에도 네트워크 연결을 유지하려면, 고정된 IP 또는 주소가 필요하다. 서비스는 이러한 변동성에 파드에 대한 고정된 접근점을 제공하여 안정적인 통신을 돕는다.
- 워커 노드 간 파드 이동이 가능하다: 쿠버네티스는 파드를 다양한 워커 노드에 배치할 수 있고, 필요에 따라 파드가 다른 워커 노드로 옮겨질 수 있다. 이런 파드의 이동에도 불구하고, 클러스터 내에서 항상 동일한 방법으로 파드에 접근해야 한다. 서비스는 파드가 어디에 있는지 상관없이 고정된 네트워크 엔드포인트를 통해 파드에 접근할 수 있다.
- 여러 파드에 대한 로드밸런싱이 필요하다: 하나의 애플리케이션을 여러 파드로 분산하여 실행할 경우, 로드 밸런싱이 필수적이다. 동일한 역할을 하는 여러 파드 중에서 트래픽을 고르게 분배함으로써 성능을 최적화하고 특정 파드에 부하가 집중되는 것을 방지할 수 있다. 서비스는 이러한 역할을 수행하여, 트래픽을 파드 간에 균등하게 분배해준다.
서비스의 종류
(1) Cluster IP
- 클러스터 내부에서 서비스가 다른 파드나 서비스를 대상으로 파드들이 내부 통신을 위한 기본적인 네트워크 타입.
- 외부 네트워크와 격리된 상태에서 클러스터 내의 파드만 해당 서비스에 접근할 수 있다.
- 자동 IP할당: 쿠버네티스가 자동으로 서비스에 IP를 할당하고, 클러스터 내의 모든 파드가 이 IP 를 통해 서비스에 접근할 수 있다. 각 파드나 서비스는 Cluster IP를 통해 내부 네트워크에서 통신하며, DNS 이름을 통해 쉽게 접근할 수 있다.
(2) NodePort
- 클러스터 외부에서 접근할 수 있도록 서비스 포트를 노출하는 방식. 외부에서 특정 IP와 Port를 통해서 클러스터 내의 서비스에 접근할 수 있다.
- 노드의 IP 및 포트 사용: 워커 노드의 IP와 지정된 포트를 이용해 서비스에 접근한다. 기본적으로 30000~32767 범위의 포트를 사용하여 외부로 서비스를 노출한다.
- 예를들어, 노드의 IP가 192.168.2.3 이고 30010 포트를 사용한다면, 192.168.2.3:30010 포트로 외부에서 접근 가능
(3) LoadBalancer
- 주로 퍼블릭 클라우드 환경에서 사용되는 서비스.
- 클러스터 외부에 있는 로드 밸런서를 통해 서비스에 접근할 수 있도록 외부 IP를 제공하여 외부 트래픽을 클러스터 내 서비스로 분배.
- 외부 IP 제공: 퍼블릭 클라우드에서 로드 밸런서가 설정되면 외부 사용자는 해당 서비스에 할당된 외부 IP를 통해 접근할 수 있다. 로드 밸런서는 여러 노드에 분산된 서비스를 관리하고, 외부에서 유입된 트래픽을 적절히 분산한다.
이 세 가지 방식을 통해 쿠버네티스는 클러스터 내부 및 외부와의 통신을 지원한다. Cluster IP는 내부 통신에만, NodePort는 외부에서 직접 접근할 때, Load Balancer는 퍼블릭 클라우드를 통한 외부 접근에 주로 사용된다. 이처럼 쿠버네티스는 상황에 맞게 서비스를 선택하여 클러스터 내외부와의 통신을 유연하게 관리할 수 있다.
728x90
반응형
'Kubernetes' 카테고리의 다른 글
[Kubernetes] ReplicaSet을 이용한 Pods 배포 (5) | 2024.10.25 |
---|---|
[Kubernetes] Deployment를 이용한 Pod 배포 - Deployment와 Pods의 차이점 (0) | 2024.10.24 |
[Kubernetes] 쿠버네티스 네트워크 통신 구조 (0) | 2024.10.24 |
[Kubernetes] 쿠버네티스 컨트롤러: Deployment, ReplicaSet, Job, CronJob, DaemonSet (5) | 2024.10.23 |
[Kubernetes] 쿠버네티스 구성요소: 클러스터, 노드, 파드, 컨테이너 (2) | 2024.10.23 |