#kubernetes #google-kubernetes-engine
#kubernetes #google-kubernetes-engine
Вопрос:
Новинка в Kubernetes.
Чтобы создать нашу среду тестирования, я пытаюсь настроить экземпляр PostgreSQL в Kubernetes, который доступен для других модулей в кластере тестирования.
Модуль и служба синтаксически корректны и запущены. Оба отображаются в выходных данных из kubectl get [svc/pods]
. Но когда другой модуль пытается получить доступ к базе данных, время ожидания истекает.
Вот спецификация модуля:
# this defines the postgres server
apiVersion: v1
kind: Pod
metadata:
name: postgres
labels:
app: postgres
spec:
hostname: postgres
restartPolicy: OnFailure
containers:
- name: postgres
image: postgres:9.6.6
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5432
protocol: TCP
И вот определение сервиса:
# this defines a "service" that makes the postgres server publicly visible
apiVersion: v1
kind: Service
metadata:
name: postgres
spec:
selector:
app: postgres
type: ClusterIP
ports:
- port: 5432
protocol: TCP
Я уверен, что по крайней мере с одним из них что-то не так, но я недостаточно знаком с Kubernetes, чтобы знать, с каким именно.
Если это уместно, мы работаем на движке Google Kubernetes Engine.
Помощь приветствуется!
Комментарии:
1. как попасть в postgres db из другого модуля?
2. Находятся ли pod и Postgres в одном пространстве имен? Как вы пытаетесь подключиться к Postgres из своего приложения? Какой DNS / имя хоста вы используете?
3. @fiunchinho Да, оба модуля находятся в одном пространстве имен разработчиков. Для нашего приложения у нас есть кое-что на Python, использующее SQLAlchemy. Мы также используем
tenacity
пакет для обработки повторных попыток, поэтому в конечном итоге мы просто получаем ошибку, связанную с тайм-аутом отtenacity
.4. можете ли вы предоставить общий доступ к строке подключения?
5. можете ли вы попробовать выполнить в одном из ваших контейнеров (предпочтительно в контейнере python) и попытаться свернуть postgres: 5432? также — предполагается ли, что сервис доступен за пределами кластера? вы можете попробовать в целях тестирования удалить type: ClusterIP