我正在跟踪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=#
我还能如何解决它?日志不是很有帮助...
答案 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主机上使用infconfig
和route -n
找出确切的IP地址和路由。