Spring Cloud Kubernetes FeignClient错误

问题描述 投票:0回答:2

我正在使用带有弹簧引导的spring cloud kubernetes以及项目所需的必要RBAC要求。

<!-- kubernetes -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-kubernetes</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-kubernetes-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-kubernetes-ribbon</artifactId>
        </dependency>

我有2个微服务在kubernetes运行

  1. my-service
  2. some-service

my-service使用spring boot 2.x运行,some-service运行Spring boot 1.x.这两项服务都通过Kubernetes Service和适当的端点公开。

application.yamlmy-service摘录如下。

some-service:
      url: http://some-service:8080
      serviceName: some-service

并且使用的FeignClient如下。

//FeignClient(url = "${some-service.url}") // does not work either
@FeignClient(value = "${some-service.serviceName}")
@RequestMapping("/api")
public interface SomeServiceClient {

我也做了spring.cloud.kubernetes.discovery.enabled=false

有了这个我希望my-service应该能够通过kubernetes服务发现与some-service交谈但是我得到了这个错误。

ERROR c.b.d.m.s.c.MatchCoordinator - error=FeignException: status 404 reading SomeServiceClient#get(Test
ion,Output) stacktrace=feign.FeignException: status 404 reading SomeServiceClient#get

我无法理解我做错了什么。此外,我没有为some-service设置spring.application.name,因为它是第三方服务。

有人可以请帮助。另外还有一个,即服务与端口转发一起正常工作以及如果通过Ingress访问。

spring spring-boot kubernetes spring-cloud-feign spring-cloud-kubernetes
2个回答
1
投票

如果您没有为某项服务设置名称,并且它是第三方服务,我认为更好的方法是通过RestTemplate或其他方式调用它。

假设客户端需要配置和已知服务名称,以便使用服务发现在网络中调用该特定服务。


1
投票

好吧,我发现差异在some-service,更新的有效载荷和my-service FeignClient没有更新。因而导致HTTP 404错误。但是它现在可以正常使用FeignClient并且能够正确地使用服务名称进行服务发现。

© www.soinside.com 2019 - 2024. All rights reserved.