Spring Cloud Kubernetes + Spring Cloud Gateway:k8sサービスのインスタンスが見つかりません

akuma8

Spring Cloud Kubernetes + Spring Cloud Gateway(SCG)を使用していますが、GKEにアプリをデプロイするのに問題があります。SCGがk8sサービスを見つけられませんが、それでもこのエラーが発生します。

There was an unexpected error (type=Service Unavailable, status=503).
Unable to find instance for uiservice

uiservice Angularアプリです。

見てみると、.../actuator/gateway/routes次の結果が得られます。

[
  {
    "route_id": "CompositeDiscoveryClient_gateway",
    "route_definition": {
      "id": "CompositeDiscoveryClient_gateway",
      "predicates": [
        {
          "name": "Path",
          "args": {
            "pattern": "/gateway/**"
          }
        }
      ],
      "filters": [
        {
          "name": "RewritePath",
          "args": {
            "regexp": "/gateway/(?<remaining>.*)",
            "replacement": "/${remaining}"
          }
        }
      ],
      "uri": "lb://gateway",
      "order": 0
    },
    "order": 0
  },
  {
    "route_id": "CompositeDiscoveryClient_uiservice",
    "route_definition": {
      "id": "CompositeDiscoveryClient_uiservice",
      "predicates": [
        {
          "name": "Path",
          "args": {
            "pattern": "/uiservice/**"
          }
        }
      ],
      "filters": [
        {
          "name": "RewritePath",
          "args": {
            "regexp": "/uiservice/(?<remaining>.*)",
            "replacement": "/${remaining}"
          }
        }
      ],
      "uri": "lb://uiservice",
      "order": 0
    },
    "order": 0
  },
  {
    "route_id": "uiservice_route",
    "route_definition": {
      "id": "uiservice_route",
      "predicates": [
        {
          "name": "Path",
          "args": {
            "_genkey_0": "/*"
          }
        }
      ],
      "filters": [],
      "uri": "lb://uiservice",
      "order": 0
    },
    "order": 0
  },
  ....
]

そのため、サービスは十分に発見されていることに注意してください:"route_id": "CompositeDiscoveryClient_gateway"そして"route_id": "CompositeDiscoveryClient_uiservice"、それらのルートは私のものではありません(私はそれらを定義しませんでした)。

この投稿を確認しました:Spring CloudKubernetesのサービスディスカバリを使用できるようにSpringCloud Gatewayアプリケーションを設定するにはどうすればよいですか?成功せずに。

私の構成:

   spring:
      profiles:
        active: prod
      cloud:
        kubernetes:
          reload:
            enabled: true
        gateway:
          discovery:
            locator:
              enabled: true 
              lower-case-service-id: true
          globalcors:
            cors-configurations: 
              '[/**]':
                allowedOrigins: uiservice
                allowedMethods: "*"
                allowCredentials: true
                maxAge: 7200
                allowedHeaders: "*"
                exposedHeaders:
                - "Access-Control-Allow-Origin"
                - "Access-Control-Allow-Methods"
                - "Access-Control-Max-Age"
                - "Access-Control-Allow-Headers"
                - "Cache-Control"
                - "Authorization"
                - "Content-Type"
          routes:
          #======UISERVICE========
          - id: uiservice_route
            uri: lb://uiservice 
            predicates:
            - Path=/* #default route

          - id: uiservice_route_assets
            uri: lb://uiservice
            predicates:
            - Path=/assets/**
   management:
      endpoints:
        web:
          exposure:
            include: "*"
      endpoint:
          restart:
            enabled: true

また、ゲートウェイの自動検出を無効にするにはどうすればよいですか?私はしたくない"route_id": "CompositeDiscoveryClient_gateway"

依存関係:

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-kubernetes-all</artifactId>
</dependency>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Greenwich.SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

ご協力いただきありがとうございます

akuma8

午後を失った後、ようやく解決策を見つけました。リボン使用時のサービス検出に問題があると思います。リボンに依存する代わりにk8sdnsサービス検出を使用しているので、新しい構成は次のとおりです。

routes:
- id: uiservice_route
  uri: http://uiservice:4200 # switch 'lb://' to 'http://'
  predicates:
  - Path=/* 

K8s uiservice構成:

apiVersion: v1
kind: Service
metadata:
  name: uiservice
spec:
  sessionAffinity: ClientIP
  selector:
    app: uiservice
  ports:
    - name: http
      port: 4200
      targetPort: ui-port

新しい質問が発生しました。k8sサービスがネイティブにそれを行うのに、なぜリボンを使用してリクエストの負荷を分散するのですか?

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Spring Cloud Kubernetes FeignClientエラー

分類Dev

Spring Cloud Kubernetesのリロードタイミングの問題

分類Dev

Spring Cloud Gateway and TokenRelay Filter

分類Dev

Kubernetes Spring Cloud Multiple Config Maps being used

分類Dev

Spring Cloud Kubernetes: What are cluster-reader permissions?

分類Dev

Kubernetesに移行しても、Spring Cloud Eureka / Zuulが必要ですか?

分類Dev

Kubernetes:Spring Cloud Data FlowServerでのサービスアカウントのアクセス許可の問題

分類Dev

Spring Cloud Config ServerとクラウドkubernetesのConfigMaps

分類Dev

spring-cloud-dataflow-kubernetesアプリのメモリ制限

分類Dev

Spring Cloud Stream RabbitMQ

分類Dev

Spring Cloud Stream RabbitMQ

分類Dev

Spring Cloud Stream RabbitMQ

分類Dev

Securing Eureka in Spring cloud

分類Dev

Spring Cloud Config Server

分類Dev

Spring Cloud Gateway + Consul構成

分類Dev

Spring Cloud GatewayとConsul Server

分類Dev

Forbid Unauthenticated requests in Spring Cloud Gateway

分類Dev

spring cloud gateway ribbon load balancing

分類Dev

Spring Cloud Kubernetes:名前の付いたconfigMapを読み取れません

分類Dev

Spring Cloud Streamの検証

分類Dev

LoadBalancerFeignClientのNullPointerException(spring-cloud-netflix)

分類Dev

Spring Cloud Data FlowストリームはKubernetesにデプロイできません

分類Dev

Spring Cloud NetflixEurekaがeureka-jsインスタンスを検出しません

分類Dev

Spring Cloud GatewayでのCookieパス

分類Dev

Spring Cloud Gateway + Spring Cloud Security + Keycloakの接続方法

分類Dev

Spring Cloud StreamとSpring Cloud Taskの違いは何ですか?

分類Dev

Kubernetes/Spring Cloud Dataflow ストリーム > spring.cloud.stream.bindings.output.destination はプロデューサーによって無視される

分類Dev

本番用のSpring Cloud Config ServerとSpring Cloud Vaultの構成

分類Dev

Spring Cloud Config and Spring Cloud Vault order of initialization

Related 関連記事

  1. 1

    Spring Cloud Kubernetes FeignClientエラー

  2. 2

    Spring Cloud Kubernetesのリロードタイミングの問題

  3. 3

    Spring Cloud Gateway and TokenRelay Filter

  4. 4

    Kubernetes Spring Cloud Multiple Config Maps being used

  5. 5

    Spring Cloud Kubernetes: What are cluster-reader permissions?

  6. 6

    Kubernetesに移行しても、Spring Cloud Eureka / Zuulが必要ですか?

  7. 7

    Kubernetes:Spring Cloud Data FlowServerでのサービスアカウントのアクセス許可の問題

  8. 8

    Spring Cloud Config ServerとクラウドkubernetesのConfigMaps

  9. 9

    spring-cloud-dataflow-kubernetesアプリのメモリ制限

  10. 10

    Spring Cloud Stream RabbitMQ

  11. 11

    Spring Cloud Stream RabbitMQ

  12. 12

    Spring Cloud Stream RabbitMQ

  13. 13

    Securing Eureka in Spring cloud

  14. 14

    Spring Cloud Config Server

  15. 15

    Spring Cloud Gateway + Consul構成

  16. 16

    Spring Cloud GatewayとConsul Server

  17. 17

    Forbid Unauthenticated requests in Spring Cloud Gateway

  18. 18

    spring cloud gateway ribbon load balancing

  19. 19

    Spring Cloud Kubernetes:名前の付いたconfigMapを読み取れません

  20. 20

    Spring Cloud Streamの検証

  21. 21

    LoadBalancerFeignClientのNullPointerException(spring-cloud-netflix)

  22. 22

    Spring Cloud Data FlowストリームはKubernetesにデプロイできません

  23. 23

    Spring Cloud NetflixEurekaがeureka-jsインスタンスを検出しません

  24. 24

    Spring Cloud GatewayでのCookieパス

  25. 25

    Spring Cloud Gateway + Spring Cloud Security + Keycloakの接続方法

  26. 26

    Spring Cloud StreamとSpring Cloud Taskの違いは何ですか?

  27. 27

    Kubernetes/Spring Cloud Dataflow ストリーム > spring.cloud.stream.bindings.output.destination はプロデューサーによって無視される

  28. 28

    本番用のSpring Cloud Config ServerとSpring Cloud Vaultの構成

  29. 29

    Spring Cloud Config and Spring Cloud Vault order of initialization

ホットタグ

アーカイブ