我正在部署一个简单的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";
答案 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)
有两个问题需要解决。