首页 > 解决方案 > 入口随机给出 502 Bad Gateway Error

问题描述

我们使用 nginx 作为集群中的入口控制器。

几天前,我们开始收到 panopta 坏网关中断电子邮件。在入口日志中

panopta-ip - [panopta-ip] - - [29/Jun/2021:10:21:02 +0000] "GET /index.html HTTP/1.1" 502 157 "http://checks.panopta.com/" "Panopta v1.1" 185 0.000 [default-webapp-8080] 100.96.12.84:8080, 100.96.12.84:8080, 100.96.12.84:8080 0, 0, 0 0.000, 0.000, 0.000 502, 502, 502 f3114b9e52a8c5d354161984458f851c
2021/06/29 10:21:04 [error] 2759#2759: *121227793 connect() failed (111: Connection refused) while connecting to upstream, client: panopta-ip, server: my-domain.com, request: "GET /index.html HTTP/2.0", upstream: "http://100.96.12.84:8080/index.html", host: "mydomain.com"
2021/06/29 10:21:09 [error] 2760#2760: *121228114 connect() failed (111: Connection refused) while connecting to upstream, client: panopta-ip, server: mydomain.com, request: "GET /index.html HTTP/1.1", upstream: "http://100.96.12.84:8080/index.html", host: "mydomain.com", referrer: "http://checks.panopta.com/"

日志说无法连接到 pod。

当我尝试访问 chrome 中的页面时,它会显示 nginx 502 bad gateway 消息。但它会在一段时间后自动解决。在搜索谷歌后,大多数链接都说应该是 pod 问题(因为他们说问题与后端有关)

当问题再次出现时,我们将重新启动 pod,它会工作,但问题会在一段时间后重新出现。因此,当问题再次出现时,我检查了从其他 pod 到 webapp pod 的连接。其他 pod 能够通过服务以及 pod 的 IP 进行连接。

所以我的问题是,为什么当其他 pod 能够连接时,入口会出现与 pod 的连接问题。检查 webapp pod 和 ingress pod 日志后,我们重新启动了 ingress pod。它现在没有给出任何问题。

有没有人遇到过类似的问题。

入口 yaml 文件

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
  name: web-app-ingress
  namespace: default
spec:
  rules:
  - host: mydomain.com
    http:
      paths:
      - backend:
          serviceName: web-app
          servicePort: 8080
        path: /mypage/
      - backend:
          serviceName: web-app
          servicePort: 8080
        path: /index.html
      - backend:
          serviceName: web-app
          servicePort: 8080
        path: /favicon.ico
  tls:
  - hosts:
    - mydomain.com
    secretName: mydomain.com-crt

标签: kuberneteskubernetes-ingressnginx-ingress

解决方案


推荐阅读