AI大模型摘要
本文描述了一起Kubernetes集群中Service无法访问的故障排查过程。故障表现为Pod正常运行,但通过Service ClusterIP或DNS域名访问失败,直接访问Pod IP则正常。通过排查DNS和kube-proxy,发现问题出在kube-proxy的iptables转发规则缺失。进一步检查发现kube-proxy Pod日志有大量报错,原因是节点证书过期导致kube-proxy无法与API Server同步Service信息。通过重启kube-proxy和更新证书,问题得到临时恢复。根因分析指出kube-proxy与API Server通信异常和监控告警缺失是主要问题。最后,文章总结了处理类似问题的经验和建议。
Service 无法访问,Pod 正常,最终定位为 kube-proxy 规则异常
1. 背景
某生产集群的一个内部微服务突然出现访问失败,业务方反馈调用接口直接超时。初步现象:
- • Pod 正常运行,没有 CrashLoopBackOff 或 Pending。
- • 用 Service ClusterIP 或者 DNS 域名访问都失败,但 直接用 Pod IP 访问是通的。
集群现象:
kubectl get pod -n order
order-service-7fcb5 1/1 Running 0 2d
kubectl get svc -n order
NAME TYPE CLUSTER-IP PORT(S)
order-service ClusterIP 10.96.180.200 8080/TCP业务调用:
curl http://order-service.order.svc.cluster.local:8080/health
# 超时但直接访问 Pod IP 正常:
curl http://10.244.2.15:8080/health
# 返回 200 OK2. 第一步:缩小范围 - DNS 还是转发问题?
由于 Pod IP 访问正常,说明:
- 应用进程没问题。
- DNS 或 kube-proxy 可能有问题。
先用 <span leaf="">nslookup</span> 验证 DNS:
kubectl exec -it debug-pod -- nslookup order-service.order.svc.cluster.local输出正常:
Name: order-service.order.svc.cluster.local
Address: 10.96.180.200DNS 没问题 → 问题出在 kube-proxy / iptables 转发链路。
3. 第二步:检查 Service & Endpoints
确认 Service 对应的 Endpoints 是否正常:
kubectl get endpoints order-service -n order -o wide输出:
NAME ENDPOINTS
order-service 10.244.2.15:8080Endpoints 正常存在 → Service 和 Pod 的资源关系没问题。
4. 第三步:深入 kube-proxy 层
4.1 检查节点 iptables 规则
找到问题请求落在哪个节点:
kubectl get pod order-service-7fcb5 -o wide假设 Pod 在节点 <span leaf="">node-3</span> 上,登录该节点:
iptables -t nat -L KUBE-SERVICES -n | grep 10.96.180.200未找到任何匹配规则!
说明 kube-proxy 没有为该 Service 安装转发规则。
4.2 检查 kube-proxy 状态
查看 kube-proxy Pod 日志(DaemonSet 部署):
kubectl logs kube-proxy-xxxx -n kube-system发现大量报错:
Error syncing iptables: error checking rule: exit status 4进一步确认节点 <span leaf="">/var/lib/kube-proxy/kubeconfig</span> 是否损坏,发现该节点证书过期,kube-proxy 一直无法与 API Server 同步 Service 信息。
5. 第四步:临时恢复 + 根因解决
5.1 临时恢复
- 手动重启节点上的 kube-proxy:
systemctl restart kube-proxy- 如果证书确实过期,先重新拉起 kube-proxy Pod 并手动触发证书刷新:
kubeadm certs renew
重启后再查 iptables:
iptables -t nat -L KUBE-SERVICES -n | grep 10.96.180.200转发规则恢复,Service 访问恢复正常。
6. 根因分析
- kube-proxy 与 API Server 通信异常
- • 节点证书过期导致 kube-proxy 无法同步最新 Service/Endpoints。
- • 已有 iptables 规则不会清理,但新建的 Service 不会安装规则。
- 监控与告警缺失
- • kube-proxy 异常未被及时发现。
- • 节点证书过期无告警。
7. 经验总结
- Service 正常、Pod 正常但访问失败 → 大概率是 kube-proxy 问题。
- • 检查 Endpoints:是否丢失?
- • 检查 iptables/KUBE-SERVICES 规则是否存在?
- kube-proxy 异常场景常见原因:
- • 节点证书过期 / kubeconfig 损坏
- • iptables 被其他组件误清理
- • DaemonSet 崩溃 / 被意外驱逐
- 生产运维建议:
- • 针对 kube-proxy 状态、节点证书到期时间设置监控告警。
- • 定期巡检节点 iptables 是否正常,避免 kube-proxy 无法安装规则导致大面积访问失败。
2 条评论
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com
2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
新车首发,新的一年,只带想赚米的人coinsrore.com
新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
新车上路,只带前10个人coinsrore.com
新盘首开 新盘首开 征召客户!!!coinsrore.com
新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
新车即将上线 真正的项目,期待你的参与coinsrore.com
新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com