gpt4 book ai didi

mongodb - 一个 pod 中的 Spring Boot 应用程序无法通过 Openshift 连接到另一个 pod 上的 mongodb

转载 作者:行者123 更新时间:2023-12-02 11:43:01 25 4
gpt4 key购买 nike

我正在尝试在 OpenShift 中部署 mongodb pod(1 个主要和 2 个辅助),它们已部署但进入“错误”状态并出现以下错误,

exception in initAndListen: IllegalOperation: Attempted to create a lock file on a read-only directory: /data/db, terminating

发布以下 adm 策略后,mongo pod 已成功启动并运行,
oc adm policy add-scc-to-group anyuid system:authenticated

现在我正在尝试部署一个连接到 mongodb 的 springboot 应用程序,但由于以下错误,pod 正在多次重启,
 INFO Exception in monitor thread while connecting to server mongo-node-2.database:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
Caused by: java.net.SocketTimeoutException: connect timed out
INFO Exception in monitor thread while connecting to server mongo-node-3.database:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
Caused by: java.net.SocketTimeoutException: connect timed out
INFO Exception in monitor thread while connecting to server mongo-node-1.database:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
Caused by: java.net.SocketTimeoutException: connect timed out
WARN Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'; nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'; nested exceptio is org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
Caused by: org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata

springboot app pod通过openshift部署时无法连接mongodb pod,所以我用k8s创建了一个dummy pod并尝试连接mongodb pod,连接成功,
mongo mongo-node-1.database.svc (successful)

我可以通过 NodePort 从 OpenShift 集群外部、使用 dns (mongo-node-1.database.svc) 从集群内部以及通过 k8s 创建的 pod 连接到 mongodb,但不能通过 OpenShift 部署。

我怀疑这个问题可能是因为 OpenShift 阻止 springboot pod 与 mongodb pod 连接的某些策略。

请有任何建议。

最佳答案

问题是由于一个项目(命名空间)中的 pod 和服务无法访问 OpenShift 中另一个项目(命名空间)中的 pod 和服务。

和中的所有 pod 和服务现在可以使用以下命令访问其中的任何 pod 和服务,反之亦然。

$ oc adm pod-network join-projects --to=<project1> <project2> <project3>

引用链接 - https://docs.openshift.com/container-platform/3.11/admin_guide/managing_networking.html

关于mongodb - 一个 pod 中的 Spring Boot 应用程序无法通过 Openshift 连接到另一个 pod 上的 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59657730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com