调试网络问题有时很困难,所以这里总结一些有用的命令用于调试。
端口转发到第一个istio-ingressgateway pod:
kubectl -n istio-system port-forward $(kubectl -n istio-system get pods -listio=ingressgateway -o=jsonpath="{.items[0].metadata.name}") 15000
然后,可以从端口转发的入口网关pod中获得http路由:
curl --silent http://localhost:15000/config_dump |jq .configs[3].dynamic_route_configs[].route_config.virtual_hosts[]
如图5-4所示:

图5-4 端口转发的入口网关pod
查看上述端口转发的入口网关pod的日志信息:
kubectl -n istio-system logs $(kubectl -n istio-system get pods -listio=ingress
gateway -o=jsonpath="{.items[0].metadata.name}") --tail=300
查看Pilot pod的日志信息:
kubectl -n istio-system logs $(kubectl -n istio-system get pods -listio=pilot -o=jsonpath="{.items[0].metadata.name}") discovery --tail=300
当启动端口转发到入口网关istio-ingressgateway之后,可以执行更多操作以获取更多信息,例如:
·要查看Envoy侦听器,请到如下网址浏览:http://localhost:15000/listeners。
·要打开更详细的日志记录,请到如下网址:http://localhost:15000/logging。
·可以在根目录http://localhost:15000/中找到更多信息。