如何在Google kubernetes中访问Postgresql Pod /服务

时间:2019-07-15 11:40:49

标签: java kubernetes google-kubernetes-engine

我正在部署一个简单的Web应用程序。我将其分为3个Pod:前端,后端和postgres数据库。我已成功将前端和后端部署到google kubernetes服务,并且它们按预期工作。但是对于我的postgresql数据库服务器,我使用了以下yamls。我使用来自dockerhub的标准postgres图像创建了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";

2 个答案:

答案 0 :(得分:1)

根据注释,您的连接字符串有错误,localhost指向运行Java代码的同一容器,您需要更改为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设置。

答案 1 :(得分:1)

有两个问题需要解决。

  1. 服务选择器键:值应与吊舱标签匹配
  2. 用PostgreSQL服务dns替换本地主机