반응형
1. Service란?
- 파드에서 실행 중인 프로세스를 위한 신원을 제공한다(공식 홈페이지)
- 파드에는 수명이 있기 때문에(휘발성 이므로 IP가 변한다) 이에 고정된 주소로 접근하기 위해 Serive가 존재
- 서비스에는 ClusterIP, NodePort, Load Balancer로 3가지 종류가 존재한다.
2. 서비스 종류
#1) ClusterIP
- 클러스터 IP로 만들어진 서비스는 외부에서는 접근할 수 없으나 같은 클러스터(같은 쿠버네티스로 연결된) 내에서는 접근이 가능하다.
- 서비스 내에 파드는 한 개일 수도 여러 개일 수도 있다.
- 여러 개의 파드가 연결되어있을 경우 트래픽을 분산하여 파드로 전달함
- 외부에서 접근할 수 없고, 클러스터 내부에서만 사용하기 때문에 허가된 사용자만 사용하는 용도 ex) 쿠버네티스 내부 대시보드

Service Yaml
apiVersion: v1
kind: Service
metadata:
name: svc-1
spec:
selector:
app: pod
ports:
- port: 9000
targetPort: 2000
type: ClusterIP //생략가능함 기본 옵션임
Pod Yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-1
labels:
app: pod
spec:
containers:
- name: container
image: 이미지명
ports:
- containerPort: 2000
svc-1 서비스가 라벨이 app: pod인 pod-1와 연결된 모습이다.
#2) NodePort
- NodePort로 만들어도 ClusterIP는 할당되어 ClusterIP기능을 기본으로 포함하고 있다
- 모든 노드에 설정한 Port가 할당되고 외부에서 설정한 port로 요청이 올 경우 서비스로 서비스는 파드로 요청이 전달됨
- 내부망이나, 일시적인 외부 연결용(개발하다가 외부에 임시로 보여줄 때)

그림과 같이 외부로부터 접근이 있을 때 파드가 없는 노드 1(컴퓨터라 생각하면 편함)로 30000 포트로 접근하면 연결된 9000 포트 서비스로 연결함 파드가 있는 노드 2로 접근해도 같은 결과를 나타냄.
Service Yaml
apiVersion: v1
kind: Service
metadata:
name: svc-2
spec:
selector:
app: pod
ports:
- port: 9000
targetPort: 2000
nodePort: 30000 //30000~32767사이로 가능
type: NodePort
#3) Load Balancer
- 기본적인 노트 포트의 특징을 그대로 가지고 있음
- 추가적인 로드벨런서가 생겨서 각 노드에 트래픽을 분산시켜주는 역할을 함
- 기본적인 쿠버네티스만을 설치해서 사용하는 경우 로드밸런서가 생기지 않음 별도로 플러그인을 설치해야 함(GCP, AWS에서 제공하는 쿠버네티스를 사용할 경우에는 제공해줌)
- 실질적으로 외부로 시스템을 노출할 때 사용함

Service.yaml
apiVersion: v1
kind: Service
metadata:
name: svc-3
spec:
selector:
app: pod
ports:
- port: 9000
targetPort: 2000
type: LoadBalancer
반응형
'프로그래밍 > 도커 & 쿠버네티스' 카테고리의 다른 글
[쿠버네티스] #4. 컨트롤러란? Deployment란? (0) | 2020.03.22 |
---|---|
[쿠버네티스] #3. 컨트롤러란? ReplicaSet이란? Template, Replicas, Selector란? (0) | 2020.03.10 |
[Docker & Kubernetes] 도커를 이용하여 Express 배포하기 (0) | 2020.03.09 |
[쿠버네티스] #1. Pod란? 파드란? (0) | 2020.02.22 |
[Docker & Kubernetes] 도커를 이용하여 톰캣서버에 war 배포하기 (1) | 2020.02.19 |