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

同一网络下本地PC访问K8S集群Nginx Ingress Controller故障求助

K8S Ingress通过port-forward本地PC无法访问自定义域名排查方案

环境与问题概述

  • 集群:CentOS7裸金属服务器,kubeadm部署K8S v1.29.4,与本地PC同网段,通过SSH远程管理
  • 配置:
    • 采用Nginx Ingress Controller实现路径访问,通过port-forward暴露Ingress Controller
    • 服务器与本地PC的/etc/hosts均配置10.3.192.2 physis-iot.com
    • Ingress清单配置:
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: portal-front
      spec:
        ingressClassName: nginx
        rules:
        - host: physis-iot.com
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: portal-front-service
                  port:
                    number: 80
            - path: /path-a
              pathType: Prefix
              backend:
                service:
                  name: portaliot-front-service
                  port:
                    number: 80
            - path: /selatiot/auth
              pathType: Prefix
              backend:
                service:
                  name: selatiot-portal-backend-service
                  port:
                    number: 4001
      
  • 现象:SSH终端内curl physis-iot.com可正常获取应用HTML,但本地PC浏览器访问physis-iot.com提示“网站未找到”

排查步骤与解决方案

1. 修正port-forward绑定地址(最可能根因)

默认kubectl port-forward仅绑定服务器127.0.0.1回环地址,本地PC无法访问该端口。需修改命令绑定服务器所有网卡:

# 替换为你的Ingress Controller服务名和命名空间,示例为ingress-nginx命名空间下的nginx-ingress-controller
kubectl port-forward --address 0.0.0.0 service/nginx-ingress-controller 8080:80 -n ingress-nginx

修改后本地PC需通过http://physis-iot.com:8080访问(8080为映射的服务器端口,可自行调整)

2. 验证本地PC域名解析

  • 在本地PC执行ping physis-iot.com,确认返回10.3.192.2
  • 执行nslookup physis-iot.com,排查DNS缓存干扰,若解析异常需刷新本地DNS缓存

3. 开放服务器防火墙端口

CentOS7的firewalld默认拦截外部端口访问,需开放port-forward使用的端口:

# 开放8080端口(替换为你实际使用的端口)
firewall-cmd --add-port=8080/tcp --permanent
# 重载防火墙规则
firewall-cmd --reload
# 验证端口是否开放
firewall-cmd --list-ports | grep 8080

4. 检查Ingress Controller运行状态

  • 确认Ingress Controller Pod正常运行:
    kubectl get pods -n ingress-nginx
    
  • 查看Ingress Controller日志,确认本地PC请求是否到达:
    kubectl logs <ingress-controller-pod-name> -n ingress-nginx
    
    若日志无本地PC请求记录,说明流量未到达Ingress Controller,需回到步骤1、3排查

5. 验证Ingress规则有效性

临时修改Ingress配置,去掉host限制测试基础访问:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: portal-front
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: portal-front-service
            port:
              number: 80

应用配置后,本地PC访问http://10.3.192.2:8080,若能正常访问则说明Ingress规则本身无问题,问题出在域名或流量转发环节


内容的提问来源于stack exchange,提问作者João Lucas Mendes de Oliveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:20:05