首页 > 解决方案 > 如何在 google kubernetes 中访问 postgresql pod/service

问题描述

我正在部署一个简单的 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";

标签: javakubernetesgoogle-kubernetes-engine

解决方案


有两个问题需要解决。

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

推荐阅读