【问题标题】:How to discover services deployed on kubernetes from the outside?如何从外部发现部署在 Kubernetes 上的服务?
【发布时间】:2019-01-06 09:37:26
【问题描述】:

User Microservice 部署在 kubernetes 上。

Order Microservice 没有部署在 kubernetes 上,而是在 Eureka 上注册。

我的问题:

Order Microservice如何通过Eureka发现和访问User Microservice??

【问题讨论】:

    标签: kubernetes spring-cloud netflix-eureka


    【解决方案1】:

    首先让我们看一下问题本身: 如果您使用覆盖网络作为 Kubernetes CNI,问题在于它会创建一个无法从外部访问的隔离网络(例如 Flannel)。如果您有这样的网络,那么一种解决方案是将 eureka 服务器移动到 kubernetes 中,以便 eureka 可以访问 Kubernetes 中的服务和 Kubernetes 之外的服务。

    另一种解决方案是告诉 eureka 在哪​​里可以找到服务而不是自动发现,但为此您还需要使用 NodePort、HostPort 或 LoadBalancer 类型的 Service 使服务在外部可用或ingress 我不确定它是否可能,但以下文档中的 11.2 可能值得一看 Eureka Client Discovery

    第三种解决方案是使用不使用覆盖网络的 CNI,例如 Romana,这将使服务默认可外部路由。

    【讨论】:

    • 谢谢,但是OrderService是如何通过Eureka找到UserService的external-ip的呢?
    • 你通过eureka调用服务,所以order服务不需要知道外部ip,调用类似于:http://{eurekaServer}/{servicename}服务解析由尤里卡。
    • 服务注册的是kubernetes pod IP地址和端口,而不是服务IP地址,所以无法通过eureka调用服务。
    • 您是否尝试按照建议设置 eureka.client.serviceUrl.defaultZone
    • 是的。服务已经在eureka中注册了,但是无法访问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    • 2017-01-08
    • 2022-01-23
    • 2020-02-15
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多