Debugging issues with your application

You deployed your app to Knative Serving, but it isn’t working as expected. Go
through this step-by-step guide to understand what failed.

Check command-line output

Check your deploy command output to see whether it succeeded or not. If your
deployment process was terminated, you should see an error message in the output
that describes the reason why the deployment failed.

This kind of failure is most likely due to either a misconfigured manifest or
wrong command. For example, the following output says that you must configure
route traffic percent to sum to 100:

The labels serving.knative.dev/route and serving.knative.dev/routeNamespace
will tell exactly which Route a ClusterIngress is a child resource of. Find the
one corresponding to your Route. If a ClusterIngress does not exist, the route
controller believes that the Revisions targeted by your Route/Service isn’t
ready. Please proceed to later sections to diagnose Revision readiness status.

Otherwise, run the following command to look at the ClusterIngress created for
your Route

kubectl get clusteringress <CLUSTERINGRESS_NAME> --output yaml

particularly, look at the status: section. If the ClusterIngress is working
correctly, we should see the condition with type=Ready to have status=True.
Otherwise, there will be error messages.

Now, if ClusterIngress shows status Ready, there must be a corresponding
VirtualService. Run the following command:

the network configuration in VirtualService must match that of ClusterIngress
and Route. VirtualService currently doesn’t expose a Status field, so if one
exists and have matching configurations with ClusterIngress and Route, you may
want to wait a little bit for those settings to propagate.

If you are familar with Istio and istioctl, you may try using istioctl to
look deeper using Istio
guide.

Check Ingress status

Before Knative 0.3 we use a LoadBalancer service call knative-ingressgateway
to handle ingress. Since Knative 0.3 we now use istio-ingressgateway Service.

To check the IP address of your Ingress, use

kubectl get svc -n istio-system istio-ingressgateway

Or replace that with knative-ingressgateway if you are using Knative release
older than 0.3.

If there is no external IP address, use

kubectl describe svc istio-ingressgateway -n istio-system

to see a reason why IP addresses weren’t provisioned. Most likely it is due to a
quota issue.

Check Revision status

If you configure your Route with Configuration, run the following command to
get the name of the Revision created for you deployment (look up the
configuration name in the Route .yaml file):