同一网络下本地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
- 采用Nginx Ingress Controller实现路径访问,通过
- 现象: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请求是否到达:
若日志无本地PC请求记录,说明流量未到达Ingress Controller,需回到步骤1、3排查kubectl logs <ingress-controller-pod-name> -n ingress-nginx
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
相关产品推荐
相关产品推荐

