树莓派K3s集群中Nginx Ingress无法暴露Home Assistant服务求助
排查Nginx Ingress Controller无法暴露Home Assistant服务的问题
以下是针对你遇到问题的分步排查方案:
1. 验证Ingress Controller的Service配置
执行命令查看Ingress Controller的Service详情:
kubectl get svc -n ingress-nginx
- 确认Service类型:如果是
NodePort,则无法直接通过节点IP的80/443端口访问,必须使用“节点IP:NodePort”的格式(比如192.168.0.57:30080);如果是ClusterIP,则外部根本无法直接访问,需要调整为NodePort或搭配MetalLB实现LoadBalancer。 - 核对端口映射:确认80和443对应的NodePort值,确保访问时使用正确的端口。
2. 检查Ingress规则与后端Service的匹配度
- 查看Ingress的完整配置:
kubectl get ingress <your-ingress-name> -o yaml
确认spec.rules[].host为smart.home,spec.rules[].http.paths[].backend.service.name和service.port与Home Assistant的Service完全一致(比如Home Assistant默认端口是8123)。
- 验证Home Assistant Service的Endpoint有效性:
kubectl describe endpoints <home-assistant-svc-name>
确认Endpoint列表中的IP和端口是Home Assistant Pod的实际监听地址,且Pod状态正常(kubectl get pods确认Running状态)。
3. 排查Nginx Ingress Controller的运行日志与配置
- 查看Ingress Controller Pod的日志,搜索与Home Assistant相关的错误:
kubectl logs -n ingress-nginx <ingress-controller-pod-name>
重点关注是否有“upstream connect failed”“no route to host”等提示,这些会直接指向后端连通性问题。
- 进入Ingress Controller Pod,检查生成的Nginx配置:
kubectl exec -n ingress-nginx <ingress-controller-pod-name> -- cat /etc/nginx/nginx.conf | grep -A 20 "smart.home"
确认对应的server块中,upstream配置的IP是Home Assistant Pod的Endpoint地址,且路径规则正确。
4. 测试集群内部网络连通性
- 从Ingress Controller Pod ping Home Assistant Pod的IP,验证网络可达性:
kubectl exec -n ingress-nginx <ingress-controller-pod-name> -- ping <home-assistant-pod-ip>
- 直接从Ingress Controller Pod访问Home Assistant的Pod端口,确认服务本身可访问:
kubectl exec -n ingress-nginx <ingress-controller-pod-name> -- curl http://<home-assistant-pod-ip>:<your-ha-port>
如果访问失败,说明Home Assistant Pod可能未正常监听端口,或者存在网络策略限制。
5. 检查节点防火墙与外部访问配置
- 树莓派默认可能开启了ufw防火墙,执行
sudo ufw status确认是否开放了Ingress Controller使用的端口(NodePort端口或80/443端口),未开放则添加规则:sudo ufw allow <port>。 - 检查集群节点的iptables规则,确保Kubernetes的Service端口转发规则正常生效。
6. 验证域名解析与Host配置
- 测试直接通过IP访问时的Host头是否正确:
curl -H "Host: smart.home" http://192.168.0.57
如果这个命令能成功,说明是本地设备的DNS解析问题,需要在访问设备的Hosts文件中添加192.168.0.57 smart.home,或者配置本地DNS服务器解析该域名。
内容的提问来源于stack exchange,提问作者learnd
相关产品推荐
相关产品推荐

