当前位置: 首页 > 知识库问答 >
问题:

一个吊舱中的Springboot应用程序无法通过Openshift连接到另一个吊舱中的mongodb

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

在遵循adm策略后,mongo吊舱成功启动并运行,

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

当通过openshift部署时,springboot应用程序pod可以连接到mongodb pod,所以我使用k8s创建了一个虚拟pod,并尝试连接mongodb pod,

mongo mongo-node-1.database.svc (successful)

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

请给我任何建议。

共有1个答案

路雅懿
2023-03-14

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

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

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

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

 类似资料:
  • 我已经在节点(node1)上的pod(pod1)上部署了一个Spring Boot应用程序。我还在不同节点(node2)上的另一个pod(pod2)上部署了JMeter。我试图从POD2执行自动负载测试。为了执行负载测试,我要求为每个测试用例重新启动pod1。如何从POD2重新启动pod1?

  • 我可以看到这两个IP,我试图连接使用tcp套接字,绑定他们与tcp端口8080。然而,它表明它没有连接。 我认为这不是使用tcp套接字连接它们的方式。是否有任何方法使一个pod服务器和其他pod客户端和conncet使用tcp套接字。 编辑: Client.C

  • 我在GKE负责詹金斯。构建的一个步骤是使用< code>kubectl部署另一个集群。我在jenkins容器中安装了gcloud-sdk。正在讨论的构建步骤是这样做的: 然而,我得到了这个错误(虽然它在本地正常工作): 注意:我注意到,在没有配置的情况下(~/.kube为空),我可以使用kubectl并访问pod当前运行的集群。我不知道它是如何做到的,它是否使用/var/run/secrets/k

  • 我们正在使用Docker 1.19运行库伯内特斯(1.18) Container是一个基于Java13的Spring启动应用程序(使用基本图像作为openjdk: 13-alpin),下面是内存设置。 豆荚: 内存-最小448M,最大2500M cpu-最小值0.1 容器: Xms:256M,Xmx:512M 当流量发送更长时间时,容器会突然重新启动;在Prometheus中,我可以看到Pod内存

  • 我在俄亥俄州的一个AWS地区安装了OpenShift3.9。我把詹金斯装在里面了。我有一个管道代码,它将从GitHub中获取Java代码,并将其与jboss绑定,并将其部署在同一个集群中的项目测试中。它工作得很好,我能够访问应用程序,因为pod正在创建,应用程序也与JBoss绑定。现在我想跨不同的集群部署这个应用程序,可以在同一区域内部署,也可以跨不同的区域部署。有没有办法做到这一点?

  • 但是在随机设置上面注释后的真实行为像:pod1、pod1、pod2、pod2、pod3、pod1、pod2、pod2....这是不正确的。 我们是否需要配置任何openshift配置,使其完善的RoundRoubin?