无法从Kubernetes集群外部连接到postgres-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

k8s小能手 2018-12-14 16:16:30 1108

我创建了一个运行一个容器(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:

Kubernetes 网络协议 关系型数据库 PostgreSQL 容器 Perl
分享到
取消 提交回答
全部回答(1)
  • k8s小能手
    2019-07-17 23:21:07

    我刚刚部署了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。

    0 0
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程