重启后K8s集群中NUC节点上的Pod无法通过Ingress访问问题求助
针对NUC节点Pod无法通过Ingress访问的排查建议
看了你的问题描述——集群重启+Ubuntu版本升级后,NUC节点上的Pod能通过kube-proxy正常访问,但Ingress连接超时,同Pod调度到其他节点就正常——我整理了几个针对性的排查方向,你可以一步步试试:
1. 检查CNI插件在NUC节点的运行状态
K8s集群内部网络依赖CNI插件,Ubuntu升级可能影响了它的运行:
- 先确认NUC节点上的CNI Pod(比如flannel、calico等)是否正常:
重点看该Pod是否在NUC节点上处于Running状态,有没有频繁重启的情况。kubectl get pods -n kube-system -o wide | grep <你的CNI插件名称> - 查看CNI Pod的日志,寻找网络初始化或连通性相关的错误:
比如有没有“无法创建网桥”“IP地址分配失败”这类明确的异常提示。kubectl logs <cni-pod-name> -n kube-system
2. 验证跨节点Pod的网络连通性
Ingress Controller通常运行在其他节点,要确认它能不能正常访问NUC节点上的Pod:
- 从Ingress Controller所在Pod,ping目标Pod的IP(也就是日志里的
10.244.3.50):
如果ping不通,再从raspi节点的任意Pod执行同样命令,对比结果,确认是不是NUC节点存在网络隔离问题。kubectl exec -it <ingress-controller-pod-name> -n kube-system -- ping 10.244.3.50 - 在NUC节点上抓包,验证请求是否真正到达Pod:
触发Ingress访问后,看有没有收到请求包,或者返回包是否被拦截。sudo tcpdump -i any host 10.244.3.50 and port 3000
3. 排查Ubuntu 21.04的系统网络配置变化
Ubuntu 21.04的网络服务(如systemd-resolved、ufw)可能和K8s集群网络产生冲突:
- 检查节点路由表,对比raspi节点,看是否缺失K8s集群内部网段的路由(比如
10.244.0.0/16):ip route - 临时关闭ufw防火墙,测试Ingress是否恢复正常:
如果恢复,说明ufw拦截了集群内部流量,需要添加对应的放行规则。sudo ufw disable - 查看
/etc/resolv.conf的配置,确认没有被systemd-resolved自动修改导致DNS或路由异常。
4. 深入检查kube-proxy与iptables配置
虽然你已经切换到iptables-legacy,但还是要确认规则同步是否正常:
- 查看NUC节点上kube-proxy的日志,寻找iptables规则同步相关的错误:
kubectl logs <kube-proxy-pod-name> -n kube-system - 对比NUC和raspi节点的iptables nat表规则,重点看
KUBE-SERVICES链:
检查是否存在目标Pod对应的服务规则,规则是否和raspi节点一致。sudo iptables-save | grep KUBE-SERVICES - 确认kube-proxy的运行模式,避免升级后自动切换到ipvs模式(可能存在兼容性问题):
如果是ipvs模式,修改configmap切换回iptables模式后重启kube-proxy。kubectl describe configmap kube-proxy -n kube-system | grep mode
5. 检查Ingress Controller的端点同步状态
确认Ingress对应的Service是否正确关联了NUC节点上的Pod:
- 查看Service的Endpoints状态,确认
10.244.3.50:3000是否在列表中:kubectl describe service <gitea-service-name> - 查看Ingress Controller的日志,是否有标记该端点为“不健康”或无法同步的提示。
内容的提问来源于stack exchange,提问作者JustSomebody42
相关产品推荐
相关产品推荐

