跳到主要内容

配置故障排查

如果实际行为与预期不符,例如路由未正确创建、插件未应用或服务无法路由流量,则需要进行故障排查。

当你应用 Kubernetes 资源(无论是 Gateway API、Ingress 还是 APISIX CRD)时,Ingress Controller 会将其转换为 ADC YAML,然后应用到网关:

本文档介绍了如何检查内存中已转换的 ADC 配置,以及如何验证实际应用到网关的配置。

检查已转换的 ADC 配置

APISIX Ingress Controller 提供了一个可通过浏览器访问的调试 API,该 API 以 JSON 格式显示从最近应用的 Gateway API、Ingress 和 APISIX CRD 资源转换而来的 ADC 配置。这有助于检查 配置与网关同步之前的内存状态

要使用调试 API,请在 Ingress Controller 的配置文件中配置以下值:

config.yaml
enable_server: true             # 启用调试 API 服务器
server_addr: "127.0.0.1:9092" # 服务器地址

这些值目前尚未在 Helm Chart 中提供。要应用更改,请修改 ConfigMap 并重启控制器 Deployment。

启用调试 API 后,你可以通过将控制器 Pod 的端口转发到本地机器来访问它:

kubectl port-forward pod/<your-apisix-ingress-controller-pod-name> 9092:9092 &

现在,你可以在浏览器中访问 127.0.0.1:9092/debug 调试 API,并按资源类型(例如路由和服务)检查已转换的资源。

检查已同步的网关配置

要检查同步到网关的配置,可以使用 Admin API。

首先,将 Admin API 的服务端口转发到本地机器:

kubectl port-forward service/apisix-admin 9180:9180 &

如果你在独立模式下使用 APISIX,可以向 /apisix/admin/configs 发送请求以查看同步到网关的所有配置:

curl "http://127.0.0.1:9180/apisix/admin/configs" -H "X-API-KEY: ${ADMIN_API_KEY}"

如果你将 APISIX 与 etcd 配合使用,可以向 /apisix/admin/<resource> 发送请求以查看特定资源的同步配置。例如,要查看路由配置:

curl "http://127.0.0.1:9180/apisix/admin/routes" -H "X-API-KEY: ${ADMIN_API_KEY}"

有关参考,请参阅 Admin API