쿠버네티스를 도입한다 하더라도 대부분 애플리케이션만 쿠버네티스 상에서 돌리고, 일반적으로 데이터베이스는 외부 Baremetal 로 실행 중인 경우가 많습니다.
이 경우 굳이 데이터베이스를 쿠버네티스로 옮기지 않아도 쿠버네티스의 애플리케이션이 데이터베이스에 접근할 수 있는 방법이 있습니다.
해결책은 Service 와 Endpoint 를 활용하는 방법입니다.
일반적으로 Service 를 만들 때 Selector 를 활용하여 다른 Pod 와 연결합니다. 이 때 Selector 가 잘 연결되면 Endpoint 도 자동으로 생성됩니다.
하지만 위의 경우에는 데이터베이스(예: mariadb) 이 쿠버네티스 클러스터 외부에 있으므로 Selector 를 활용할 수 없습니다.
이 경우에는 Endpoint 가 자동으로 생성되지 않으므로 Endpoint 를 수동으로 생성하여 연결하는 방법을 사용하면 됩니다.
---
apiVersion: v1
kind: Service
metadata:
name: ex-host
spec:
type: ClusterIP
ports:
- name: mariadb
port: 3306
targetPort: 3306
---
apiVersion: v1
kind: Endpoints
metadata:
name: ex-host
subsets:
- addresses:
- ip: 192.168.30.16
ports:
- name: mariadb
port: 3306
protocol: TCP
위의 경우에는 mariadb 가 192.168.30.16 이라는 Host 에 떠 있으며, 쿠버네티스 내의 Pod 에서는 ex-host 라는 Service 명을 통하여 mariadb에 접근할 수 있습니다.
'Kubernetes > template' 카테고리의 다른 글
[service] 쿠버네티스 서비스 사용하기 (0) | 2024.02.22 |
---|---|
[trouble] 잘못된 pod 생성 트러블 슈팅 (0) | 2024.02.15 |
[deployment] nginx pod, httpd scale (0) | 2024.02.08 |
(기초) 쿠버네티스 활용 - nginx (0) | 2023.12.12 |