开发者社区> 问答> 正文

无法从Kubernetes集群外部连接到postgres

我创建了一个运行一个容器(postgres-container)和一个NodePort(postgres-service)的部署。我可以从pod本身连接到postgresql:

$ kubectl --context=minikube exec -it postgres-deployment-7fbf655986-r49s2 \

-- psql --port=5432 --username=postgres --dbname=postgres

但我无法通过该服务连接。

$ minikube service --url postgres-service
http://192.168.99.100:32254

$ psql --host=192.168.99.100 --port=32254 --username=postgres --dbname=postgres
psql: could not connect to server: Connection refused

    Is the server running on host "192.168.99.100" and accepting
    TCP/IP connections on port 32254?

我认为postgres已正确配置为接受远程TCP连接:

$ kubectl --context=minikube exec -it postgres-deployment-7fbf655986-r49s2 \

-- tail /var/lib/postgresql/data/pg_hba.conf

host all all 127.0.0.1/32 trust
...
host all all all md5

$ kubectl --context=minikube exec -it postgres-deployment-7fbf655986-r49s2 \

-- grep listen_addresses /var/lib/postgresql/data/postgresql.conf

listen_addresses = '*'
我的服务定义如下:

apiVersion: v1
kind: Service
metadata:
name: postgres-service
spec:
selector:

app: postgres-container

type: NodePort
ports:

- port: 5432
  targetPort: 5432
  protocol: TCP

部署是:

apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: postgres-deployment
spec:
replicas: 1
selector:

展开
收起
k8s小能手 2018-12-14 16:16:30 4655 0
1 条回答
写回答
取消 提交回答
  • 整合最优质的专家资源和技术资料,问答解疑

    我刚刚部署了postgres并通过NodePort公开了它的服务,以下是我的pod和服务。

    [root@master postgres]# kubectl get pods
    NAME READY STATUS RESTARTS AGE
    postgres-7ff9df5765-2mpsl 1/1 Running 0 1m

    [root@master postgres]# kubectl get svc postgres
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    postgres NodePort 10.100.199.212 5432:31768/TCP 20s
    这是通过nodeport连接到postgres的方式:

    [root@master postgres]# kubectl exec -it postgres-7ff9df5765-2mpsl -- psql -h 10.6.35.83 -U postgresadmin --password -p 31768 postgresdb
    Password for user postgresadmin:
    psql (10.4 (Debian 10.4-2.pgdg90+1))
    Type "help" for help.

    postgresdb=#
    在上面,10.6.35.83是我的节点/主机IP(不是pod IP或clusterIP),端口是服务中定义的NodePort。问题是你没有使用正确的IP连接到postgresql。

    2019-07-17 23:21:07
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ACK 云原生弹性方案—云原生时代的加速器 立即下载
ACK集群类型选择最佳实践 立即下载
企业运维之云原生和Kubernetes 实战 立即下载

相关镜像