You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Ingress公网访问Kibana出现502错误,如何修复?

Kibana Ingress 502错误排查与解决

问题背景

我按照Elastic官方指南部署了Kibana,通过端口转发可以正常访问,但配置了如下Ingress后,访问时出现502错误:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kibana-ui
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: "false"
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /kibana
        pathType: Prefix
        backend:
          service:
            name: quickstart-kb-http
            port:
              number: 5601

核心问题分析

  1. 无效的rewrite-target配置:你将rewrite-target设为"false",这是非法值,Nginx Ingress Controller无法解析该配置,直接导致转发规则异常。
  2. Kibana路径不匹配:Kibana默认监听根路径/,当Ingress以/kibana前缀转发请求时,Kibana无法识别子路径下的请求,进而引发资源加载失败或转发错误。

解决方法

方案一:配置Ingress路径重写

修改Ingress配置,通过正则匹配实现路径重写,将/kibana/xxx转发为/xxx给Kibana:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kibana-ui
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /kibana(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: quickstart-kb-http
            port:
              number: 5601

应用配置:kubectl apply -f <ingress-file.yaml>

方案二:让Kibana适配子路径

修改Kibana的CR配置,指定其运行在/kibana子路径下,这样Ingress无需重写即可直接转发:

apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: quickstart
spec:
  version: 8.x.x # 替换为你的实际Kibana版本
  count: 1
  config:
    server.basePath: "/kibana"
    server.rewriteBasePath: true
  http:
    service:
      spec:
        type: ClusterIP
  podTemplate:
    spec:
      containers:
      - name: kibana
        resources:
          requests:
            memory: 1Gi
            cpu: 1

应用Kibana配置后,Ingress可以简化为:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kibana-ui
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /kibana
        pathType: Prefix
        backend:
          service:
            name: quickstart-kb-http
            port:
              number: 5601

额外排查步骤

如果修改后仍出现502,检查以下内容:

  • 确认Kibana服务端点状态:执行kubectl get endpoints quickstart-kb-http,查看是否有Ready的Pod IP。
  • 查看Ingress Controller日志:kubectl logs -n <ingress-namespace> <nginx-ingress-pod-name>,根据日志定位具体错误(如连接超时、拒绝连接)。
  • 检查Kibana Pod状态:kubectl get pods -l kibana.k8s.elastic.co/name=quickstart,确认Pod正常运行,查看Pod日志排查内部错误。

内容的提问来源于stack exchange,提问作者himekami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:52:58