繁体   English   中英

上游连接错误或在标头之前断开连接/重置。 重置原因:连接失败。 Spring 引导和 java 11

[英]upstream connect error or disconnect/reset before headers. reset reason: connection failure. Spring Boot and java 11

我在将我的纯 Kube.netes 应用程序迁移到 Istio 托管时遇到问题。 我正在使用谷歌云平台 (GCP)、Istio 1.4、谷歌 Kube.netes 引擎 (GKE)、Spring Boot 和 JAVA 11。

我让容器在纯 GKE 环境中运行没有问题。 现在我开始迁移我的 Kube.netes 集群以使用 Istio。 从那时起,当我尝试访问公开的服务时,我收到了以下消息。

上游连接错误或在标头之前断开连接/重置。 重置原因:连接失败

这个错误信息看起来很普通。 我发现了很多不同的问题,都有相同的错误信息,但没有一个与我的问题有关。

下面是 Istio 的版本:

client version: 1.4.10
control plane version: 1.4.10-gke.5
data plane version: 1.4.10-gke.5 (2 proxies)

下面是我的 yaml 文件:

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    account: tree-guest
  name: tree-guest-service-account
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: tree-guest
    service: tree-guest
  name: tree-guest
spec:
  ports:
  - name: http
    port: 8080
    targetPort: 8080
  selector:
    app: tree-guest
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: tree-guest
    version: v1
  name: tree-guest-v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tree-guest
      version: v1
  template:
    metadata:
      labels:
        app: tree-guestaz
        version: v1
    spec:
      containers:
      - image: registry.hub.docker.com/victorsens/tree-quest:circle_ci_build_00923285-3c44-4955-8de1-ed578e23c5cf
        imagePullPolicy: IfNotPresent
        name: tree-guest
        ports:
        - containerPort: 8080
      serviceAccount: tree-guest-service-account
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: tree-guest-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
    - port:
        number: 80
        name: http
        protocol: HTTP
      hosts:
        - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: tree-guest-virtual-service
spec:
  hosts:
    - "*"
  gateways:
    - tree-guest-gateway
  http:
    - match:
        - uri:
            prefix: /v1
      route:
        - destination:
            host: tree-guest
            port:
              number: 8080

为了应用 yaml 文件,我使用了以下参数:

kubectl apply -f <(istioctl kube-inject -f ./tree-guest.yaml)

部署应用程序后,在 Istio 代理参数的结果下方:

istio-ingressgateway-6674cc989b-vwzqg.istio-system SYNCED SYNCED SYNCED SYNCED 
istio-pilot-ff4489db8-2hx5f 1.4.10-gke.5 tree-guest-v1-774bf84ddd-jkhsh.default SYNCED SYNCED SYNCED SYNCED istio-pilot-ff4489db8-2hx5f 1.4.10-gke.5

如果有人知道出了什么问题,请告诉我。 我被这个问题困了几天。

谢谢。

正如@Victor 提到的,这里的问题是错误的 yaml 文件。

我解决它。 在我的情况下,yaml 文件是错误的。 我查看了它,现在问题已经解决了。 谢谢你们。,-维克多

如果您正在寻找 yaml 示例,我建议您查看istio github 示例


作为503 upstream connect error or disconnect/reset before headers. reset reason: connection failure 503 upstream connect error or disconnect/reset before headers. reset reason: connection failure经常发生我设置了很少的故障排除答案,还有另一个问题与 503 错误,我遇到了几个月的答案,来自 istio 文档的有用信息和我会检查的东西。

带有 503 错误的示例:

istio 文档中 503 错误的常见原因:

我会先检查几件事:

  • 检查服务端口名称,如果 Istio 知道协议,它可以正确路由流量。 它应该是istio 文档中提到的<protocol>[-<suffix>]
  • 检查mTLS,如果有mTLS引起的问题,通常这些问题会导致错误503。
  • 检查 istio 是否工作,我建议应用bookinfo 应用程序示例并检查它是否按预期工作。
  • 检查你的命名空间是否注入kubectl get namespace -L istio-injection
  • 如果使用子集的 VirtualService 在定义子集的 DestinationRule 之前到达,Pilot 生成的 Envoy 配置将引用不存在的上游池。 这会导致 HTTP 503 错误,直到所有配置对象都可用于 Pilot。

我正好降落在这里,症状完全相似。

但就我而言,我不得不

将 pod 监听地址从 172.0.0.1 切换到 0.0.0.0

这解决了我的问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM