【问题标题】:How to access postgresql pod/service in google kubernetes如何在 google kubernetes 中访问 postgresql pod/service
【发布时间】:2019-11-24 02:39:51
【问题描述】:

我正在部署一个简单的 Web 应用程序。我将它分为 3 个 pod:前端、后端和 postgres db。我成功地将我的前端和后端部署到 google kubernetes 服务并且它们按预期工作。但是对于我的 postgresql 数据库服务器,我使用了以下 yamls。 postgres 图像是我使用来自 dockerhub 的标准 postgres 图像创建的。我创建了一些表,插入了一些数据并推送到 DockerHub。我的后端无法连接到我的数据库。我想我可能需要更改我的 Java 连接代码。不确定是否使用 localhost。它在我的本地 Eclipse Jee 和 Tomcat 上没有任何问题。

//my pod.yaml
apiVersion: v1
kind: Pod
metadata:
   name: postgres-app-pod
   labels:
      name: postgres-app-pod
      app: demo-geo-app
spec:
   containers:
   - name: postgres
     image: myrepo/example:v1
     ports:
     - containerPort: 5432

//my service.yaml
apiVersion: v1
kind: Service
metadata:
   name: db
   labels:
      name: db-service
      app: demo-geo-app
spec:
   ports:
   - port: 5432
     targetPort: 5432
   selector:
      name: postgres-pod
      app: demo-geo-app 

   //from my java backend, I access my db server this way.
String dbURL = "jdbc:postgresql://localhost:5432/Location?user=postgres&password=mysecretpassword";

【问题讨论】:

  • 您将使用其名称访问 postgres 服务,在您的情况下为 db。像这样更改您的代码将有所帮助:String dbURL = "jdbc:postgresql://db:5432/Locationuser=postgres&password=mysecretpassword";

标签: java kubernetes google-kubernetes-engine


【解决方案1】:

有两个问题需要解决。

  1. 服务选择器 key:value 应与 pod 标签匹配
  2. 将 localhost 替换为 postgresql 服务 dns

【讨论】:

  • 有没有办法在像Minikube这样的简单场景中知道服务DNS?当我通过部署+服务使用与上述类似的场景时,即使我使用从命令minikube service my-db-service --namespace my-namespace 的输出中获得的 IP 地址,我也无法连接。我认为问题不是 DNS,但我可以看到 K8S 服务已启动并正在运行,所以我不确定是什么问题
【解决方案2】:

根据 cmets,您的连接字符串有错误,localhost 指的是您运行 Java 代码的同一个 pod,您需要更改为 db 与您在服务 yaml 上使用的名称相同才能工作.

我建议您在类型上使用部署而不是 Pod,但在这种情况下,您尝试部署数据库时需要使用 StatefulSet,请查看文档

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

另外,我建议您检查https://helm.sh,您有很多图表可供使用,而不必从头开始编写数据库之类的服务。

https://github.com/helm/charts/tree/master/stable/postgresql

在该图表上,您已准备好所有必要的 yaml,包括 PVC 配置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2018-05-07
    • 2020-07-06
    • 2019-02-24
    • 1970-01-01
    相关资源
    最近更新 更多