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

将eureka与kubernetes问题结合起来

吴才俊
2023-03-14

我有一个(Spring开机/Spring云)应用程序(微服务'MS'架构)与Netflix工具构建,我想将其部署在kubernetes集群(一个主和2个小跟班),以从其编排事实中获得优势。

顺便说一下,我在集群上创建了一个库贝-dns服务,我还尝试用3个Pod挂载一个eureka服务(名为eurekaservice)。另一方面,我运行了一个带有下一个eureka配置的微服务:

client:
  serviceUrl:
    defaultZone: http://eurekaservice:8761/eureka/

好消息是集群上的每个eureka pod都会收到关于新装载的MS实例的通知。坏消息是,当MS宕机时,只有一个eureka吊舱得到通知,其他吊舱没有。另一件事是,当我看到MS日志文件时,它显示了下一个错误:

Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: 2016-12-01 06:01:54.469 ERROR 1 --- [nio-8761-exec-1] c.n.eureka.resources.StatusResource: Could not determine if the replica is available

Dec 01 09:01:54 ctc-cicd3 docker-current[1465]:
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: java.lang.NullPointerException: null
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at com.netflix.eureka.resources.StatusResource.isReplicaAvailable(StatusResource.java:90)
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at com.netflix.eureka.resources.StatusResource.getStatusInfo(StatusResource.java:70)
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at org.springframework.cloud.netflix.eureka.server.EurekaController.status(EurekaController.java:63)
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at sun.reflect.GeneratedMethodAccessor92.invoke(Unknown Source)
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Dec 01 09:01:54 ctc-cicd3 docker-current[1465]: at java.lang.reflect.Method.invoke(Method.java:606)


Dec 01 09:02:16 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:16.918  WARN 1 --- [nio-8761-exec-8] com.netflix.eureka.InstanceRegistry      : DS: Registry: lease doesn't exist, registering resource: MS - gateway-bbn50:MS:8090
Dec 01 09:02:16 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:16.919  WARN 1 --- [nio-8761-exec-8] c.n.eureka.resources.InstanceResource    : Not Found (Renew): MS - gateway-bbn50:MS:8090
Dec 01 09:02:16 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:16.927  INFO 1 --- [nio-8761-exec-5] com.netflix.eureka.InstanceRegistry      : Registered instance id 12.16.64.2 with status UP
Dec 01 09:02:17 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:17.061  INFO 1 --- [io-8761-exec-10] com.netflix.eureka.InstanceRegistry      : Registered instance id 12.16.64.2 with status UP
Dec 01 09:02:46 ctc-cicd3 docker-current[1465]: 2016-12-01 06:02:46.932  WARN 1 --- [nio-8761-exec-9] com.netflix.eureka.InstanceRegistry      : DS: Registry: lease doesn't exist, registering resource: MS - gateway-bbn50:MS:8090

我认为导致问题的原因是复制品无法看到彼此。

这个问题怎么解决!!

共有3个答案

常俊侠
2023-03-14

由于您禁用了eureka,因此仅使用zuul代理:

服务器带子listOfServers=localhost:9090,localhost:9091,localhost:9092服务器。带子尤里卡。已启用=错误

如果要在k8s(kubernetes)上部署,请使用服务名称

ribbon: 
  eureka: 
    enabled: false

zuul:
  routes:
    organization-proxy:
      serviceId: organization-service
      path: /organization/**


organization-proxy:   
  ribbon:
    listOfServers: organization
明越
2023-03-14

这里的问题是Eureka是一个有状态的应用程序,你不能通过增加副本的数量来缩放它。

参见尤里卡“同伴敬畏”文档:http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html

薛飞星
2023-03-14

看起来你想用库伯内特斯发现取代尤里卡发现,这里有另一个答案(来自http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html):

首先在Ribbon中禁用eureka支持:

ribbon:
  eureka:
   enabled: false

然后在网关中为您希望通过网关访问的每个微服务添加一个类似这样的配置属性(您可以使用配置服务器加载这些属性)。

app1:   
  ribbon:
    listOfServers: app1-k8s-service-name
app2:   
  ribbon:
    listOfServers: app2-k8s-service-name

然后,网关应该能够正确地将调用路由到微服务。

 类似资料:
  • 嗨,我有Flux,在迭代每个元素时,它会创建新的单声道。我也有其他单声道之外的通量。并要做到以下几点:当流量(与相应的内部单声道的结束),然后做第二个单声道。最大的挑战是单声道内部的流量从网络客户端请求中产生。作为起点,请看看“加载”方法。基本上没有webClient它的工作,但在情况下与webClient内部地图工作之后。使用Spring启动2 渐变依赖性:

  • 问题内容: 我在Android应用程序开发中从Java稍微转移到Kotlin,但是在某些情况下,我不想用Kotlin进行编码,而是希望这些特殊情况用Java编写: 省去Kotlin多余的使用量 我知道现在正是Java总是以相反的方式触发 还提供了表达式和许多其他功能。 但仍然,我的某些代码无法用Kotlin编写,例如成员或字段。 Kotlin注释实际上可以代替那些注释。但是喜欢Java的某些编码功

  • 我想在React项目的后端合并一个使用语音识别的Python文件。 这里我有一段使用语音识别的Python代码: 我尝试在react组件中导入文件,如下所示: 在这里,我尝试将我的按钮链接到Python文件中的函数: 我收到了它未能编译的消息以及以下内容: 我能做些什么来使这个工作?

  • 我试图找出我的每个同事正在处理多少个客户端,然后将用于其他计算。我的电子表格中有一列是每个同事的姓名首字母,用逗号分隔(这是我无法控制的),目前我可以点击并拖动公式 < code > = COUNTIF(SPLIT($B2,“,”,“name here”), 效果很好。然而,我需要把它转换成一个数组公式,这样做一切都会中断。出现的情况是,COUNTIF正在通过SPLIT(array,“,”)创建的

  • 我使用https://doc.akka.io/docs/alpakka-kafka/current/consumer.html从kafka使用数据,如下所示: 接下来,我将通过akka http websocket客户端将收到的结果转发到webserver 以下是如何构建websocket客户端: 我有两个问题: > 如何将消费者和websocket客户端组合成一个流,并让它将消息发送到Web服务

  • 为了能够轻松地测试我的SOAP客户机(通过利用MockWebServiceServer),我想使用Spring的WebServiceTemplate。 SOAPendpoint是.NET服务器。基于wsdl,我能够生成bean(主要是请求类)和endpoint接口。 生成的界面如下: SOAPFaultClientException:反序列化操作“CallCheckXML”的请求消息正文时出错。O