Kubernetes Pod无法使用Hasura映像连接到本地Postgres服务器

时间:2020-05-03 06:40:22

标签: postgresql kubernetes kubernetes-pod hasura

我正在跟踪this tutorial,将hasura kubernetes吊舱连接到我的本地Postgres服务器。

当我创建部署时,pod的容器无法连接到postgres(CrashLoopBackOff并继续重试),但是没有给出任何原因。这是日志:

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

我的deployment.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作为postgres网址-这里的“ localhost”是正确的地址吗?

我验证了上面的postgres网址在尝试时可以使用(无密码):

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

> my_db=#

我还能如何解决它?日志不是很有帮助...

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么问题是Pod(在Minikube内部)无法通过localhost访问安装在主机(运行Minikube的主机)上的Postgres。

在这种情况下,请检查this thread

... Minikube VM可以访问192.168.99.1上的主机的本地主机(来自Minikube的127.0.0.1仍是Minicube的本地主机)。

从技术上讲,对于Pod,localhost是Pod本身。主机和Minikube通过网桥连接。您可以在Minikube主机上使用infconfigroute -n找出确切的IP地址和路由。