kubernetes - Openshift 上的 Spring Eureka

标签 kubernetes openshift netflix-eureka openshift-origin

我有两个简单的 Springboot 微服务,它们使用 Spring Eureka 相互连接。

步骤-

  1. 首先我运行 Eureka 服务器。
  2. 然后我运行这两个微服务。
  3. 因此,两个微服务都从 Eureka 服务器注册和发现。

我想在 Openshift v3 中实现同样的目标。我知道 Openshift 使用 Kubernates 服务来实现负载平衡和 Pod 发现。但是我可以在 Openshift 中使用 Eureka 服务器吗?

在 Openshift 中我有 3 个 pod..

  1. 1 个用于 eureka 的 pod,2 个用于微服务的 pod。
  2. 两个微服务都向 eureka 注册。
  3. 但在 Eureka 中,它注册为微服务的 pod IP:PORT。

  4. 因此,当发现微服务时,会尝试调用 POD IP 和失败。

通常,要访问 POD IP,我们需要调用 Openshift 中的服务层。 那么如何让eureka服务器注册服务器层IP:PORT而不是POD的IP:PORT

最佳答案

对于 Spring Cloud Eureka Server 项目:application.yml

server:
  port: 8761

eureka:
  instance:
    hostname: server.eureka.svc   # it should be service url in openshift cluster.
  client:
    fetch-registry: false 
    register-with-eureka: false 
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

对于 Spring Cloud Eureka 客户端项目:application.yml

eureka.client.serviceUrl.defaultZone=http://server.eureka.svc8761/eureka/
eureka.instance.preferIpAddress=false

关于kubernetes - Openshift 上的 Spring Eureka,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48424738/

相关文章:

kubernetes - 为什么 kubernetes HA 需要奇数个 master

dns - 如何为集群外的查询公开kube-dns服务?

mysql - 如何在 openshift MySql 数据库上设置 transaction_isolation = READ-COMMITTED?

optimization - 如何在 OpenShift 3.6 中获取有关最新成功部署 pod 的信息

java - 使用 eureka 的 Spring Cloud 网关自动路由

kubernetes DNS - 让服务通过 DNS 自行联系

kubernetes - 节点无法加入集群 K8S onprem

routes - OpenShift Online v3+ - 添加新路线会出现禁止错误

java - Spring启动应用程序(eureka客户端)抛出ClassNotFoundException : javax. ws.rs.core.Response$StatusType

spring - 在 Spring 中进行集成测试时如何模拟 Eureka?