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

Spring boot Kubernetes服务发现

穆德海
2023-03-14

我在Spring Boot应用程序上遇到了Kubernetes服务发现的问题。

无论spring boot应用程序是在Kubernetes集群内运行还是在Kubernetes集群外运行,我都应该能够发现这些服务。我们的本地发展不会在k8s集群上。

我正在通过DNS使用服务发现。我尝试使用spring-cloud-starter-kubernetes

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-kubernetes</artifactId>
        <version>0.2.0.RELEASE</version>
    </dependency>
@Autowire
private DiscoveryClient discoveryClient;

共有1个答案

殷承恩
2023-03-14

我已经使用Spring Cloud Kubernetes依赖项解决了这个问题

0.2.0.发布

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-kubernetes-ribbon</artifactId>
        <version>${spring.cloud.kubernetes}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-kubernetes-config</artifactId>
        <version>${spring.cloud.kubernetes}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-kubernetes-core</artifactId>
        <version>${spring.cloud.kubernetes}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-kubernetes-discovery</artifactId>
        <version>${spring.cloud.kubernetes}</version>
    </dependency>

对我来说非常重要的是功能区依赖关系,因为它使用负载平衡的rest模板来替换kubernetes集群中找到的正确的pod IP的服务名称。

 类似资料:
  • 服务发现服务[架构概述]。 { "cluster": "{...}", "refresh_delay_ms": "{...}" } cluster (required, object) 承载服务发现服务的上游群集的标准定义。该群集必须实现和运行SDS HTTP API的REST服务。 refresh_delay_ms (required, integer) 每次访问SDS群集的API延迟

  • 如何包含Eureka服务器 要在项目中包含Eureka服务器,请使用组org.springframework.cloud和工件id spring-cloud-starter-eureka-server的启动器。有关 使用当前的Spring Cloud发布列表设置构建系统的详细信息,请参阅Spring Cloud项目页面。 如何运行Eureka服务器 示例eureka服务器; @SpringBoot

  • Kubernetes中为了实现服务实例间的负载均衡和不同服务间的服务发现,创造了Serivce对象,同时又为从集群外部访问集群创建了Ingress对象。

  • 在单体架构时,因为服务不会经常和动态迁移,所有服务地址可以直接在配置文件中配置,所以也不会有服务发现的问题。但是对于微服务来说,应用的拆分,服务之间的解耦,和服务动态扩展带来的服务迁移,服务发现就成了微服务中的一个关键问题。 服务发现分为客户端服务发现和服务端服务发现两种,架构如下图所示。 这两种架构都各有利弊,我们拿客户端服务发现软件Eureka和服务端服务发现架构Kubernetes/SkyD

  • 背景 当前有两个服务,分别是user-service和order-service,nacos服务列表中无法发现两个服务 排查 Nacos v2.2.3 依赖已引入,配置文件已配置addr 运行时未出现连接nacos的日志: 希望大佬们可以帮忙看看是什么问题 问题程序链接 https://oss-20001.oss-cn-qingdao.aliyuncs.com/cloud-demo.zip

  • 我正在尝试一个非常简单的Istio设置Docker桌面库伯内特斯安装。 我有2个Spring Boot微服务,并在我的K8s“集群”中部署了这2个服务,没有任何复制。我的YAML文件中只有这两个服务的服务和部署。 我已经安装了 istio,我可以看到我的 pod 中有 2 个容器。一个是Spring靴应用程序,另一个是istio sidecar。 我像这样从服务2向服务1发出一个rest调用,它工

  • LbEndpoint LocalityLbEndpoints ClusterLoadAssignment ClusterLoadAssignment.Policy LbEndpoint LbEndpoint proto EndPoint是指Envoy可以将流量路由到的端口。 { "endpoint": "{...}", "metadata": "{...}", "load_balanc

  • 在配置上游群集时,Envoy需要知道解析这些群集的成员。这被称为服务发现。 支持的服务发现类型 静态 静态是最简单的服务发现类型。通过静态配置明确每个上游主机的网络名称(IP地址/端口,unix域套接字等)。 严格(Strict)DNS 当使用DNS服务发现时,Envoy将持续并异步地解析指定的DNS目标。DNS结果中的每个返回的IP地址将被视为上游群集中的显式主机。 这意味着如果查询返回三个IP