ECK部署的Kibana端口转发正常但Traefik Ingress无法访问求助
问题根因
你当前遇到的问题核心来自两点:
- ECK默认给Kibana服务启用了自签TLS,对外暴露的是HTTPS协议的5601端口,你当前的Ingress配置未告知Traefik后端服务使用HTTPS协议,Traefik默认用HTTP请求HTTPS端口,导致无响应
- 自签证书不受客户端信任,所以连通后会触发证书告警
- 你的Kibana配置存在层级错误:
http字段的正确位置是spec.http,你错放在了podTemplate.spec下,导致TLS相关配置不生效
解决方案
方案一:保留Kibana自签TLS,调整Ingress配置适配
首先修正Ingress配置,补充Traefik专属注解,指定后端协议并跳过自签证书校验,同时建议将已废弃的networking.k8s.io/v1beta1替换为通用的networking.k8s.io/v1版本:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: k-ingress annotations: kubernetes.io/ingress.class: traefik # Traefik v1 版本用以下两个注解 traefik.ingress.kubernetes.io/service.serversscheme: https traefik.ingress.kubernetes.io/service.insecureskipverify: "true" # 若使用Traefik v2+ 版本,替换上面两个注解为以下内容 # traefik.http.services.kibana.loadbalancer.server.scheme: https # traefik.http.services.kibana.loadbalancer.server.insecureskipverify: "true" spec: # 若需要在Ingress层终结TLS,补充以下tls配置,替换为你自己的可信证书Secret # tls: # - hosts: # - kibana.host.com # secretName: your-trusted-cert-secret rules: - host: kibana.host.com http: paths: - path: / pathType: Prefix backend: service: name: kibana-kb-http port: number: 5601
配置更新后稍等几十秒即可访问,若未配置Ingress层可信证书,首次访问会保留证书告警,属于正常情况。
方案二:关闭Kibana自签TLS,走Ingress统一终结TLS
如果不需要Kibana内部TLS加密,可以直接关闭自签证书,简化链路配置:
- 修正Kibana资源配置,关闭自签TLS:
apiVersion: kibana.k8s.elastic.co/v1 kind: Kibana metadata: name: kibana labels: various... spec: version: 7 count: 1 elasticsearchRef: name: "elasticsearch" # http配置在spec层级,不是podTemplate.spec下 http: tls: selfSignedCertificate: disabled: true podTemplate: spec: containers: - name: kibana resources: limits: memory: 2Gi cpu: 2
- 修改Ingress配置,无需额外后端协议注解,直接配置Ingress层TLS即可:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: k-ingress annotations: kubernetes.io/ingress.class: traefik spec: tls: - hosts: - kibana.host.com secretName: your-trusted-cert-secret # 替换为你的可信证书Secret rules: - host: kibana.host.com http: paths: - path: / pathType: Prefix backend: service: name: kibana-kb-http port: number: 5601
该方案下用户访问时使用Ingress层的可信证书,不会触发证书告警。
排查验证步骤
配置更新后可以按以下顺序验证:
- 执行
kubectl get svc kibana-kb-http确认服务端口配置正确 - 进入集群内任意Pod执行
curl <服务地址:端口>确认Kibana本身可正常访问 - 查看Traefik控制器日志确认无路由、后端健康检查相关报错
内容的提问来源于stack exchange,提问作者Pampa Nello
相关产品推荐
相关产品推荐

