簡體   English   中英

Spring Cloud Kubernetes FeignClient錯誤

[英]Spring Cloud Kubernetes FeignClient Error

我正在將Spring Cloud Kubernetes與Spring Boot配合使用,並滿足項目所需的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>

我在kubernetes中運行2個微服務

  1. my-service
  2. some-service

my-service使用Spring Boot 2.x運行,而some-service使用Spring Boot 1.x運行。 這兩個服務都通過Kubernetes Service以及適當的端點公開。

my-serviceapplication.yaml摘錄如下。

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進行訪問。

如果您沒有為某項服務設置名稱,而它是第三方服務,那么我認為更好的方法是通過RestTemplate或其他名稱來調用它。

偽客戶端需要配置並知道服務名稱,以便它使用服務發現來調用網絡中的特定服務。

好吧,我發現差異在於某項some-service ,其中的有效負載已更新,而my-service FeignClient未更新。 因此導致HTTP 404錯誤。 但是,它現在可以正確地與FeignClient使用,並且能夠正確地使用服務名稱進行服務發現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM