在此应用程序中,nodejs pod 在 kubernetes 内部运行,而 mongodb 本身作为 localhost 位于主机外部。
这确实不是一个好的设计,但它只适用于开发环境。在生产中,将有一个单独的 mongodb 服务器,因为这样的选项可以在端点中具有非环回 IP,因此在生产中不会出现问题。
已考虑以下开发环境选项
使用 localhost 连接字符串连接到 mongodb,但它将引用 pod 自己的 localhost,而不是主机的 localhost
使用无头服务并在端点中提供本地主机 IP 和端口。但是端点不允许环回
建议是否有一种方法可以从集群内部(pod/nodejs 应用程序)访问主机本地主机上的 mongodb 数据库。
我已经建立了在Google Kubernetes Engine + Google Cloud SQL上运行的应用程序堆栈。在本地开发时,我希望我的应用程序连接到在集群外部运行的postgres数据库服务器,以模拟生产环境。
似乎做到这一点的方法是通过定义一个外部端点,如下所述:Minikube将在本地主机上运行的MySQL作为服务公开
不幸的是,我无法将“ 127.0.0.1”指定为端点IP地址:
kubectl apply -f kubernetes/local/postgres-service.yaml
service "postgres-db" unchanged
The Endpoints "postgres-db" is invalid: subsets[0].addresses[0].ip:
Invalid value: "127.0.0.1": may not be in the loopback range (127.0.0.0/8)
Run Code Online (Sandbox Code Playgroud)
所以我被迫将postgres绑定到我的实际机器地址。
似乎必须有一种方法可以将本地主机的端口映射到本地kubernetes集群,但是到目前为止,我还没有找到一种方法来实现。
有人知道诀窍吗?或者,有人可以建议不涉及在群集内运行postgres的替代解决方案吗?
我正在尝试从minikube pod内部访问托管在localhost的docker容器内的MySQL数据库,但收效甚微。我尝试了描述的解决方案,Minikube将在本地主机上运行的MySQL作为服务公开,但没有任何效果。我已经在我们在AWS上使用的服务上对我的解决方案建模,但是它似乎不适用于minikube。我的服务内容如下
apiVersion: v1
kind: Service
metadata:
name: mysql-db-svc
namespace: external
spec:
type: ExternalName
ExternalName: 172.17.0.2
Run Code Online (Sandbox Code Playgroud)
...我尝试使用端口3306上的“ mysql-db-svc”从pod内部连接到数据库,但无济于事。如果尝试从Pod内对地址“ mysql-db-svc”进行CURL处理,它将无法解析主机名。
有人可以建议沮丧的新手吗?
我尝试使用docker image启动我的应用程序(Spring Boot + Spring Cloud + Eureka + MongoDB),但我无法连接到MongoDB.
例外:
exception "com.mongodb.MongoSocketOpenException: Exception opening socket."
Run Code Online (Sandbox Code Playgroud)
我用execute命令启动我的应用程序:docker-compose up --build
Docker日志:
application.yml:
# Spring properties
spring:
application:
name: car-service
data:
mongodb.host: localhost
mongodb.port: 32769
mongodb.uri: mongodb://localhost/test
mongo.repositories.enabled: true
# Discovery Server Access
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
# HTTP Server (Tomcat) Port
server:
port: 2220
error:
whitelabel:
enabled: false
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml:
eureka:
build: ./eureka-discovery-service
ports:
- "8761:8761"
mongodb:
image: mongo:3.0.4
ports:
- "32769:32769"
postgresql:
image: postgres:9.6.1
ports:
- "32770:32770"
gateway-service:
build: …Run Code Online (Sandbox Code Playgroud) kubernetes ×3
minikube ×2
docker ×1
java ×1
localhost ×1
mongodb ×1
networking ×1
postgresql ×1
spring-boot ×1