Submariner 故障排除手册:常见网络连接问题的解决方案

张开发
2026/4/10 19:11:16 15 分钟阅读

分享文章

Submariner 故障排除手册:常见网络连接问题的解决方案
Submariner 故障排除手册常见网络连接问题的解决方案【免费下载链接】submarinerNetworking component for interconnecting Pods and Services across Kubernetes clusters.项目地址: https://gitcode.com/gh_mirrors/su/submarinerSubmariner 作为跨 Kubernetes 集群互连 Pod 和 Service 的关键网络组件在实际部署中可能会遇到各种网络连接问题。本手册将帮助新手用户快速定位并解决 Submariner 常见的网络故障确保跨集群通信顺畅。1. 部署前环境检查要点 ✅在部署 Submariner 前确保环境满足以下要求可有效避免大部分基础问题网络策略检查防火墙规则确保各集群间的 UDP 4500、UDP 500 端口开放这些是 IPsec 隧道建立的关键端口。节点可达性验证集群节点间的网络连通性可使用ping或telnet测试节点间基础网络是否通畅。Kubernetes 版本确认所有集群使用的 Kubernetes 版本符合 Submariner 兼容要求可参考项目根目录下的 README.md 文档。2. 常见连接问题及解决方案 2.1 跨集群 Pod 无法通信症状不同集群的 Pod 之间无法 ping 通或建立连接。排查步骤检查 Submariner 组件状态kubectl get pods -n submariner-operator确保submariner-gateway、submariner-route-agent等 Pod 均处于Running状态。查看 Gateway 日志寻找错误kubectl logs -n submariner-operator submariner-gateway-pod-name常见错误如connection refused可能指示 IPsec 隧道建立失败。验证 Endpoint 状态kubectl get endpoints.submariner.io -n submariner-operator确保所有集群的 Endpoint 状态正常包含有效的公共 IP 和端口信息。解决方案若发现 IPsec 隧道问题检查 pkg/cable/libreswan/libreswan.go 中的配置确保证书和密钥正确。重启 Submariner Gateway 组件kubectl rollout restart deployment submariner-gateway -n submariner-operator2.2 服务发现失败症状通过 Service 名称跨集群访问服务时提示 service not found。排查步骤检查 Globalnet 状态若启用kubectl get globalegressips.submariner.io -A确认全局 IP 分配正常。查看服务导出配置 检查 deploy/crds/submariner.io_clusters.yaml 中的 CRD 定义确保服务导出规则正确配置。解决方案重新应用服务导出配置kubectl apply -f deploy/crds/submariner.io_clusters.yaml检查 pkg/globalnet/controllers/service_export_controller.go 中的控制器逻辑确保服务导出逻辑正常。2.3 隧道建立超时症状Gateway 日志中频繁出现 tunnel establishment timeout 错误。排查步骤检查节点网络配置 确认节点的网络接口配置正确特别是 pkg/netlink/network_interface.go 中定义的网络接口处理逻辑是否与实际环境匹配。验证 NAT 环境 Submariner 依赖 NAT 穿透功能若集群部署在 NAT 环境下需确保 pkg/natdiscovery/natdiscovery.go 中的 NAT 发现逻辑正常工作。解决方案调整 IPsec 超时设置修改 pkg/cable/libreswan/connection_file.go 中的连接超时参数。检查并修复节点间的网络延迟问题确保网络往返时间RTT在可接受范围内。3. 高级故障排除工具 ️Submariner 提供了多种工具帮助诊断复杂问题3.1 健康检查工具使用内置的健康检查器验证跨集群连接状态kubectl exec -n submariner-operator submariner-gateway-pod-name -- /submariner healthcheck健康检查逻辑定义在 pkg/cableengine/healthchecker/healthchecker.go。3.2 日志收集脚本利用项目提供的日志收集工具获取详细诊断信息git clone https://gitcode.com/gh_mirrors/su/submariner cd submariner ./scripts/e2e/external/utils collect-logs日志收集脚本位于 scripts/e2e/external/utils。4. 预防措施与最佳实践 定期更新保持 Submariner 版本最新参考 versions/version.go 了解版本信息。监控部署部署 Prometheus 和 Grafana 监控 Submariner 指标相关指标定义在 pkg/cable/metrics.go。备份配置定期备份 Submariner 配置文件特别是 deploy/crds/ 目录下的 CRD 定义文件。通过本手册提供的方法大多数 Submariner 网络连接问题都能得到快速解决。如遇到复杂问题建议查阅项目 CONTRIBUTING.md 文档获取社区支持渠道信息。【免费下载链接】submarinerNetworking component for interconnecting Pods and Services across Kubernetes clusters.项目地址: https://gitcode.com/gh_mirrors/su/submariner创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章