API7 网关故障排查
本指南帮助你诊断和解决 API7 网关在安装、配置和运行过程中遇到的常见问题。对于每个问题,本指南都提供了 症状、可能原因和解决步骤。
前置条件
- 令牌管理。
诊断工具
检查组件状态
Kubernetes
kubectl get pods -n api7 -o wide
kubectl describe pod {pod_name} -n api7
kubectl logs {pod_name} -n api7 --tail=100
Docker
docker ps -a --filter "name=api7"
docker logs {container_name} --tail=100
检查日志
# Kubernetes
kubectl exec -n api7 {gateway_pod} -- tail -f /usr/local/apisix/logs/error.log
kubectl logs -n api7 {cp_pod} --tail=100
# Docker
docker exec {gateway_container} tail -f /usr/local/apisix/logs/error.log
docker logs {cp_container} --tail=100
测试连通性
curl -v "http://{GATEWAY_HOST}:9080/"
curl -v "https://{GATEWAY_HOST}:9443/" --insecure
curl -v "https://{DASHBOARD_HOST}:7443/" --insecure
控制面问题
无法访问控制台
症状:无法访问 https://{host}:7443 上的控制台 Web 界面。
可能原因和解决方法:
-
Pod 或容器未运行:
kubectl get pods -n api7 -l app.kubernetes.io/component=dashboard
docker ps -a --filter "name=dashboard"如果 Pod 处于
CrashLoopBackOff状 态,或容器已经退出,请检查日志中的启动错误。 -
端口未暴露或被防火墙阻止:确认端口 7443 未被防火墙或安全组规则阻止。若要本地访问,可以执行
kubectl port-forward svc/api7ee3-dashboard 7443:7443 -n api7。 -
TLS 证书问题:如果使用自定义 TLS 证书,请确认其有效且已正确挂载。
PostgreSQL 连接失败
症状:控制面 Pod 因数据库连接错误无法启动。
- 确认 PostgreSQL 正在运行:
kubectl get pods -n api7 -l app.kubernetes.io/name=postgresql。 - 确认 Helm values 或环境变量中的数据库密码与 PostgreSQL 配置一致。
- 如果存储已满或 PVC 未绑定,请执行
kubectl get pvc -n api7检查持久卷状态。
配置变更未生效
症状:在控制台中进行的变更没有出现在数据面。
- 确认 DP Manager 服务正在运行且数据面可以访问:
kubectl get svc -n api7 | grep dp-manager。 - 检查控制面与数据面之间使用的 mTLS 证书是否已过期;如已过期,请续期并重新部署。
- 确保 NetworkPolicy 或防火墙规则没有阻止控制面与数据面之间的 7900/7943 端口通信。