5.6. 检查 Ingress 和 Istio 路由
有时,当 Istio 用作 Ingress 层时,Ingress 和 Istio 路由存在问题。您可以使用 OpenShift CLI (oc
)查看它们的详细信息。
流程
运行以下命令列出所有 Ingress 资源及其对应的标签:
$ oc get ingresses.networking.internal.knative.dev -o=custom-columns='NAME:.metadata.name,LABELS:.metadata.labels'
输出示例
NAME LABELS helloworld-go map[serving.knative.dev/route:helloworld-go serving.knative.dev/routeNamespace:default serving.knative.dev/service:helloworld-go]
在这个输出中,标签
service.knative.dev/route
和service.knative.dev/routeNamespace
表示 Ingress 资源所在的Route
。应该会列出您的Route
和 Ingress。如果您的 Ingress 不存在,路由控制器会假定您的
Route
或Service
对象的目标Revision
对象未就绪。继续执行其他调试过程来诊断Revision
readiness 状态。如果列出了 Ingress,请运行以下命令检查为路由创建的
ClusterIngress
对象:$ oc get ingresses.networking.internal.knative.dev <ingress_name> --output yaml
在输出的 status 部分中,如果
type=Ready
的状况的状态为True
,则 Ingress 可以正常工作。否则,输出中会包含错误消息。如果 Ingress 的状态是
Ready
,则代表有一个对应的VirtualService
对象。运行以下命令,验证VirtualService
对象的配置:$ oc get virtualservice -l networking.internal.knative.dev/ingress=<ingress_name> -n <ingress_namespace> --output yaml
VirtualService
对象中的网络配置必须与Ingress
和Route
对象匹配。由于VirtualService
对象不公开Status
字段,您可能需要等待其设置传播。