1. Cluster IP
- 쿠버네티스에서 Pod는 컨트롤러가 관리하므로 노드를 옮겨다니면서 실행되기도 하고 클러스터 안 Pod의 IP가 변경되기도 한다. 이렇게 동적으로 변하는 Pod에 고정적으로 접근할 때 사용하는 방법이 Service다.
- 서비스(ClusterIP) 생성 시, apiserver → (kubelet) → kube-proxy → iptables 에 rule이 생성됨
- 풀스택 웹 애플리케이션에는 일반적으로 다양한 종류의 파드가 있다.
- 프론트엔드 웹 서버를 실행하는 파드 세트, 백엔드 웹서버를 실행하는 파드 세트, Redis와 같은 key-value store를 실행하는 파드 세트, MYSQL과 같은 영구 데이터베이스를 실행중인 파드 세트 등이 있을 수 있다.
- 웹 프론트엔드 서버는 백엔드서버와 통신해야하며, 백엔드서버는 데이터베이스, Redis서버 등과 통신해야 한다.
2. 애플리케이션 간의 연결을 설정하는 올바른 방법
- 모든 파드에는 할당된 IP주소가 있다.
- 파드는 얼마든지 죽을 수도 있고 항상 새로운 파드들도 생성된다.
- 따라서 파드에 할당된 IP주소는 정적 주소가 아니다.
- 따라서 애플리케이션 간 통신을 한다고 했을 때, 이 파드 IP에 의존할 수 없다.
- 여기서 의문,
첫 번째 프론트 엔드 파드(10.244.0.3)가 백엔드 서비스에 연결하고자 할 때 셋 중 누구에게 갈까? 그 결정을 누가 내릴까?
위와 같은 문제를 해결하기 위해 Kubernetes 서비스는 Pod를 함께 그룹화하여 Pod에 액세스할 수 있는 단일 인터페이스(Virtual IP)를 제공한다.
3. Service of type ClusterIP 생성 방법
1) Definition file 생성
ClusterIP 타입의 서비스를 만들기 위해 먼저 Definition file을 만든다.
apiVersion : v1
kind : Service
metadata:
name : back-end (이름을 'back-end'로 한다)
spec :
types : ClusterIP (ClusterIP는 디폴트 타입이다)
ports :
targetPort : 80(백엔드가 노출되는 포트. 80으로 지정한다)
port : 80(서비스가 노출되는 포트. 이것도 80으로 지정한다)
selector:
app: myapp
type: back-end
2) kubectl create로 service 생성.
$ kubectl create -f service-definition.yaml
3) 생성한 service 조회
$ kubectl get services
'Computer Science > Kubernetes 정리' 카테고리의 다른 글
Kubernetes 정리 8 : Services (0) | 2023.02.15 |
---|---|
언제 딸지 모르겠지만 Kubernetes 자격증 팁!! (0) | 2023.02.15 |
Kubernetes 정리 7 : Deployments (0) | 2023.02.15 |
Kubernetes 정리 5 : ReplicaSets (0) | 2023.02.15 |
Kubernetes 정리 4 : Kube Scheduler (0) | 2023.02.13 |