4.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]
在这个输出中,label
serving.knative.dev/route
和service.knative.dev/routeNamespace
表示 Ingress 资源所在的Route
。您的Route
和 Ingress 应该被列出。如果您的 Ingress 不存在,路由控制器会假定
Route
或Service
对象的目标Revision
对象未就绪。继续其他调试程序,以诊断修订
就绪状态。如果列出了 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
字段,您可能需要等待其设置传播。