【发布时间】:2017-03-26 19:58:16
【问题描述】:
我正在整理一个概念证明,以帮助识别同时使用 Spring Boot/Netflix OSS 和 Kubernetes 的问题。这也是为了证明Prometheus、Graphana等相关技术。
我有一个 Eureka 服务设置,它在我的 Kubernetes 集群中启动时没有问题。这被命名为发现,并在使用
添加到 K8 时被命名为“discovery-1551420162-iyz2c”
对于我的配置服务器,我正在尝试使用基于逻辑 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 地址的情况下定位它们的对等点?
【问题讨论】:
-
Eureka 使用服务名定位实例。如果您检查 eureka 服务器,您将列出在 eureka 服务器上注册的服务。当服务 A 尝试与服务 B 通信时,服务 A 将使用服务 B 名称从 eureka 服务器获取与服务 B 相关的所有信息。所以eureka设置中不会有固定的IP地址。
-
我不太明白您要做什么,但是为什么当您在 kubernates 上部署时需要 eurika,kubernates 不能完成 eurika 的工作?
-
@Adelin 没错。 Kubernetes 已经有指向 pod 的服务。我找不到任何解释服务发现和 Kubernetes 的资源。
标签: spring-boot kubernetes microservices netflix-eureka spring-cloud-netflix