java - 如何在 google kubernetes 中访问 postgresql pod/服务

标签 java kubernetes google-kubernetes-engine

我正在部署一个简单的 Web 应用程序。我将其分为 3 个 pod:前端、后端和 postgres db。我成功地将前端和后端部署到 google kubernetes 服务,并且它们按预期工作。但对于我的 postgresql 数据库服务器,我使用了以下 yaml。 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";

最佳答案

有两个问题需要解决。

  1. 服务选择器键:值应与 Pod 标签匹配
  2. 将 localhost 替换为 postgresql 服务 DNS

关于java - 如何在 google kubernetes 中访问 postgresql pod/服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57038977/

相关文章:

java - Android Java Sharedpreferences不会保存数据

java - 如何在另一个类中调用Java类中的变量

java - 维塔米奥服务

mongodb - 从其他容器与 Kubernetes (GKE) 上的容器通信

ssl - 在 GKE 上自动将 HTTP 重定向到 HTTPS

java - spring mvc 预期输出

Azure 容器服务 (AKS) - 将容器公开给其他 VNET 资源

kubernetes - 查找兄弟 pod(由同一部署部署的 pod)

kubernetes - 在 Kubernetes 中禁用 cronjob

java - Google Container Engine 中集群中 pod 的组织