切换NodePort为Ingress后Kasten K10控制台出现502 Bad Gateway错误
Kasten K10 Ingress 502 Bad Gateway 问题排查与解决
1. Ingress配置是否有误?
你的Ingress配置语法本身没有问题,但有两个关键细节需要验证:
- 确认
gateway服务的端口映射:执行kubectl get svc gateway -n kasten-io,查看PORT(S)列是否存在80:xxxx/TCP格式的映射。如果服务实际未暴露80端口(比如直接用8000作为service port),那Ingress中port.number: 80的配置就不匹配,需要改成服务实际对外暴露的端口号。 - 路径适配:从你NodePort的访问地址来看,K10控制台本身已适配
/k10/路径,当前的path: /k10/和pathType: Prefix配置是合理的,无需额外路径重写。
2. 如何确保Ingress正确转发到Gateway的8000端口?
日志中的Host is unreachable是核心问题——Ingress控制器Pod无法连通Gateway Pod的IP(192.168.36.188:8000),按以下步骤排查修复:
第一步:验证Gateway Pod的可用性
- 查看Pod状态:执行
kubectl get pods -n kasten-io -l app=gateway,确保Pod处于Running状态且就绪探针检测通过。若Pod异常,先重启Pod或检查Kasten K10的部署状态。 - 检查端口监听:进入Gateway Pod,执行
kubectl exec -it <gateway-pod-name> -n kasten-io -- netstat -tulpn | grep 8000,确认8000端口确实处于监听状态。
第二步:测试Ingress控制器与Gateway Pod的网络连通性
- 找到Ingress控制器Pod:执行
kubectl get pods -n ingress-nginx,进入目标Pod并Ping Gateway的Pod IP:
若Ping不通,说明存在网络隔离,继续排查网络策略或防火墙规则。kubectl exec -it <ingress-pod-name> -n ingress-nginx -- bash ping 192.168.36.188
第三步:排查网络策略限制
- 查看kasten-io命名空间的网络策略:执行
kubectl get networkpolicy -n kasten-io。若存在策略,需确认它允许Ingress控制器所在的ingress-nginx命名空间访问Gateway的8000端口。若未配置,添加以下网络策略:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-ingress-to-gateway namespace: kasten-io spec: podSelector: matchLabels: app: gateway ingress: - from: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: ingress-nginx ports: - protocol: TCP port: 8000
第四步:检查节点级防火墙/安全组
如果是云环境K8s集群,检查节点安全组规则,确保允许节点间的8000端口通信;如果是物理集群,排查节点间的防火墙配置,确认Ingress控制器所在节点能访问Gateway Pod所在节点的8000端口。
第五步:调整Ingress后端端口(按需)
若gateway服务的service port直接为8000(而非80转发到8000),修改Ingress的后端端口配置:
backend: service: name: gateway port: number: 8000
内容的提问来源于stack exchange,提问作者seok won nam
相关产品推荐
相关产品推荐

