Kubernetes Pod не может подключиться к локальному серверу postgres с изображением Hasura

Я подписываюсь на это руководство для подключения модуля hasura kubernetes к моему локальному серверу postgres.

Когда я создаю развертывание, контейнер модуля не может подключиться к postgres (CrashLoopBackOff и повторяет попытки), но не объясняет, почему. Вот журналы:

{"type":"pg-client","timestamp":"2020-05-03T06:22:21.648+0000","level":"warn","detail":{"message":"postgres connection failed, retrying(0)."}}

Мой Deploy.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: hasura
    hasuraService: custom
  name: hasura
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hasura
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: hasura
    spec:
      containers:
      - image: hasura/graphql-engine:v1.2.0
        imagePullPolicy: IfNotPresent
        name: hasura
        env:
        - name: HASURA_GRAPHQL_DATABASE_URL
          value: postgres://USER:@localhost:5432/my_db
        - name: HASURA_GRAPHQL_ENABLE_CONSOLE
          value: "true"
        ports:
        - containerPort: 8080
          protocol: TCP
        resources: {}

Я использую postgres://USER:@localhost:5432/MY_DB в качестве URL-адреса postgres - правильный ли адрес здесь "localhost"?

Я подтвердил, что указанный выше URL-адрес postgres работает, когда я пытаюсь (без пароля):

> psql postgres://USER:@localhost:5432/my_db
psql (12.2)
Type "help" for help.

> my_db=#

Как еще я могу решить эту проблему? Журналы не очень полезны ...


person tbd_    schedule 03.05.2020    source источник
comment
Не могли бы вы немного объяснить свою установку? Вы запускаете свой кластер k8s на Minikube?   -  person Nick    schedule 05.05.2020
comment
Привет @Nick, да, работает локально на minikube.   -  person tbd_    schedule 06.05.2020


Ответы (1)


Если я вас правильно понял, проблема в том, что Pod («изнутри» Minikube) не может получить доступ к Postgres, установленному на хост-машине (той, на которой работает сам Minikube) через localhost.

В этом случае проверьте эта ветка.

... Виртуальная машина Minikube может получить доступ к локальному хосту вашего хост-компьютера на 192.168.99.1 (127.0.0.1 из Minikube по-прежнему будет локальным хостом Minicube).

Технически для Pod localhost - это сам Pod. Хост-машина и Minikube связаны через мост. Вы можете узнать точные IP-адреса и маршруты с помощью infconfig и route -n на вашем хосте Minikube.

person Nick    schedule 06.05.2020