У меня есть кластер Kubernetes (K8s), работающий на физическом сервере A (IP-адрес внутренней сети 192.168.200.10) и база данных PostgreSQL, работающая на другом физическом сервере B (IP-адрес внутренней сети 192.168.200.20). Как мой контейнер приложений Java (модуль), работающий в K8, может подключаться к базе данных PostgreSQL на сервере B?
ОС: Ubuntu v16.04 Docker 18.09.7 Kubernetes v1.15.4 Calico v3.8.2 Базовый образ Pod: openjdk: 8-jre-alpine
Я пробовал следовать этому примеру для создания службы и конечной точки
kind: Service
apiVersion: v1
metadata:
name: external-postgres
spec:
ports:
- port: 5432
targetPort: 5432
---
kind: Endpoints
apiVersion: v1
metadata:
name: external-postgres
subsets:
- addresses:
- ip: 192.168.200.20
ports:
- port: 5432
И у меня была строка подключения JDBC в виде: jdbc: postgresql: // external-postgres / MY_APPDB, но это не работает. Модуль не может пропинговать сервер B или телнетить базу данных, используя указанный внутренний IP-адрес или пинговать внешнее имя службы postgres. Я не хочу использовать «hostNetwork: true» или подключать сервер B через публичный IP-адрес.
Любой совет очень ценится. Спасибо.