Модуль Kubernetes не может получить доступ к другим модулям, предоставляемым службой

#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