gpt4 book ai didi

spring-boot - Eureka 和Kubernetes

转载 作者:行者123 更新时间:2023-12-03 09:23:10 25 4
gpt4 key购买 nike

我正在整理一个概念证明,以帮助一起使用Spring Boot / Netflix OSS和Kubernetes识别陷阱。这也是为了证明相关技术,例如Prometheus和Graphana。

我有一个Eureka服务设置,在我的Kubernetes集群中毫无问题的开始。这被称为发现,并在使用以下命令添加到K8后被命名为“discovery-1551420162-iyz2c”
kubectl run discovery --image=xyz/discovery-microservice --replicas=1 --port=8761

对于我的配置服务器,我试图基于逻辑URL使用Eureka,因此在我的bootstrap.yml中,

server:
port: 8889

eureka:
instance:
hostname: configserver
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://discovery:8761/eureka/

spring:
cloud:
config:
server:
git:
uri: https://github.com/xyz/microservice-config

我开始使用
kubectl run configserver --image=xyz/config-microservice --replicas=1 --port=8889

该服务最终运行名为configserver-3481062421-tmv4d。然后,我在配置服务器日志中看到异常,因为它试图找到eureka实例,但找不到。

我使用docker-compose在本地通过链接进行了相同的设置,并且可以轻松启动各种容器。
discovery:
image: xyz/discovery-microservice
ports:
- "8761:8761"
configserver:
image: xyz/config-microservice
ports:
- "8888:8888"
links:
- discovery

我应该如何设置诸如eureka.client.serviceUri之类的东西,以便我的微服务可以在不知道K8集群内固定IP地址的情况下找到其对等节点?

最佳答案

How can I setup something like eureka.client.serviceUri?



您必须在eureka Pod /部署上有一个Kubernetes service,然后才能为您提供一个可引用的IP地址和端口号。然后使用该可引用地址查找Eureka服务,而不是“8761”。

解决有关Eureka的HA配置的更多问题

每个k8s服务不应有一个以上的 Eureka pods /副本(请记住, pods 是临时的, Eureka 服务注册表需要一个可引用的IP地址/域名)。为了实现高可用性(HA),请在每个中包含一个Pod的情况下启动更多k8s服务。
  • Eureka服务1->单个Pod
  • Eureka服务2->另一个单荚
  • ..
  • ..
  • Eureka服务n->另一个单荚

  • 因此,现在您对每个Eureka都有一个可引用的IP /域名(k8s服务的IP)..现在它可以相互注册。

    感觉像是一个过大的杀手?
    如果您所有的服务都在同一个kubernetes命名空间中,则可以通过k8s服务+ KubeDNS附加组件来实现eureka提供的所有功能(嗯,几乎所有功能,除了客户端负载平衡)。阅读Christian Posta的 article

    编辑

    您可以使用 StatefulSets指出的 Stefan Ocke来代替每个都有一个Pod的Services。

    Like a Deployment, a StatefulSet manages Pods that are based on an identical container spec. Unlike a Deployment, a StatefulSet maintains a sticky identity for each of their Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling.

    关于spring-boot - Eureka 和Kubernetes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40567429/

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