排查 Waypoints 问题
本指南介绍了如果您已将命名空间、服务或工作负载注册到中继代理,但未看到预期行为时应采取的措施。
流量路由或安全策略问题
要从 curl
pod 通过 productpage
服务向 reviews
服务发送一些请求
$ kubectl exec deploy/curl -- curl -s http://productpage:9080/productpage
要从 curl
pod 向 reviews
的 v2
pod 发送一些请求
$ export REVIEWS_V2_POD_IP=$(kubectl get pod -l version=v2,app=reviews -o jsonpath='{.items[0].status.podIP}')
$ kubectl exec deploy/curl -- curl -s http://$REVIEWS_V2_POD_IP:9080/reviews/1
对 reviews
服务的请求应由 reviews-svc-waypoint
对任何 L7 策略进行强制执行。对 reviews
的 v2
pod 的请求应由 reviews-v2-pod-waypoint
对任何 L7 策略进行强制执行。
如果您的 L7 配置未应用,请先运行
istioctl analyze
以检查您的配置是否存在验证问题。$ istioctl analyze ✔ No validation issues found when analyzing namespace: default.
确定哪个中继代理正在为您的服务或 pod 实现 L7 配置。
如果您的源使用服务的主机名或 IP 调用目标,请使用
istioctl experimental ztunnel-config service
命令确认您的中继代理是否被目标服务使用。根据前面的示例,reviews
服务应使用reviews-svc-waypoint
,而default
命名空间中的所有其他服务应使用命名空间waypoint
。$ istioctl ztunnel-config service NAMESPACE SERVICE NAME SERVICE VIP WAYPOINT default bookinfo-gateway-istio 10.43.164.194 waypoint default bookinfo-gateway-istio 10.43.164.194 waypoint default bookinfo-gateway-istio 10.43.164.194 waypoint default bookinfo-gateway-istio 10.43.164.194 waypoint default details 10.43.160.119 waypoint default kubernetes 10.43.0.1 waypoint default productpage 10.43.172.254 waypoint default ratings 10.43.71.236 waypoint default reviews 10.43.162.105 reviews-svc-waypoint ...
如果您的源使用 pod IP 调用目标,请使用
istioctl ztunnel-config workload
命令确认您的中继代理是否被目标 pod 使用。根据前面的示例,reviews
的v2
pod 应使用reviews-v2-pod-waypoint
,而default
命名空间中的所有其他 pod 不应有任何中继代理,因为默认情况下 中继代理仅处理发送到服务的流量。$ istioctl ztunnel-config workload NAMESPACE POD NAME IP NODE WAYPOINT PROTOCOL default bookinfo-gateway-istio-7c57fc4647-wjqvm 10.42.2.8 k3d-k3s-default-server-0 None TCP default details-v1-698d88b-wwsnv 10.42.2.4 k3d-k3s-default-server-0 None HBONE default productpage-v1-675fc69cf-fp65z 10.42.2.6 k3d-k3s-default-server-0 None HBONE default ratings-v1-6484c4d9bb-crjtt 10.42.0.4 k3d-k3s-default-agent-0 None HBONE default reviews-svc-waypoint-c49f9f569-b492t 10.42.2.10 k3d-k3s-default-server-0 None TCP default reviews-v1-5b5d6494f4-nrvfx 10.42.2.5 k3d-k3s-default-server-0 None HBONE default reviews-v2-5b667bcbf8-gj7nz 10.42.0.5 k3d-k3s-default-agent-0 reviews-v2-pod-waypoint HBONE ...
如果 pod 的中继代理列的值不正确,请验证您的 pod 是否已使用
istio.io/use-waypoint
进行标记,并且标签的值是可以处理工作负载流量的中继代理的名称。例如,如果您的reviews
的v2
pod 使用只能处理服务流量的中继代理,则您将看不到该 pod 使用的任何中继代理。如果 pod 上的istio.io/use-waypoint
标签看起来正确,请验证您的中继代理的 Gateway 资源是否已使用istio.io/waypoint-for
的兼容值进行标记。对于 pod,合适的值为all
或workload
。通过
istioctl proxy-status
命令检查中继代理的状态。$ istioctl proxy-status NAME CLUSTER CDS LDS EDS RDS ECDS ISTIOD VERSION bookinfo-gateway-istio-7c57fc4647-wjqvm.default Kubernetes SYNCED SYNCED SYNCED SYNCED NOT SENT istiod-795d55fc6d-vqtjx 1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564 reviews-svc-waypoint-c49f9f569-b492t.default Kubernetes SYNCED SYNCED SYNCED NOT SENT NOT SENT istiod-795d55fc6d-vqtjx 1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564 reviews-v2-pod-waypoint-7f5dbd597-7zzw7.default Kubernetes SYNCED SYNCED NOT SENT NOT SENT NOT SENT istiod-795d55fc6d-vqtjx 1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564 waypoint-6f7b665c89-6hppr.default Kubernetes SYNCED SYNCED SYNCED NOT SENT NOT SENT istiod-795d55fc6d-vqtjx 1.23-alpha.75c6eafc5bc8d160b5643c3ea18acb9785855564 ...
启用 Envoy 的 访问日志,并在发送一些请求后检查中继代理的日志。
$ kubectl logs deploy/waypoint
如果没有足够的信息,您可以为中继代理启用调试日志。
$ istioctl pc log deploy/waypoint --level debug
通过
istioctl proxy-config
命令检查中继代理的 Envoy 配置,该命令显示与中继代理相关的所有信息,例如集群、端点、侦听器、路由和密钥。$ istioctl proxy-config all deploy/waypoint
有关如何调试 Envoy 的更多信息,请参阅 深入了解 Envoy 配置 部分,因为中继代理基于 Envoy。