Skip to content

Troubleshooting Istio

John Howard edited this page Sep 23, 2019 · 12 revisions

Troubleshooting Istio

Sidecar Injection

If your pods are failing to start, look into the MutatingAdmissionWebhook istio-sidecar-injector. When a pod is created, the Kubernetes api-server will call the sidecar injector service. Errors during injection, or failure to connect to the service, can result in pods not being created.

Collecting Information

The replica set will generally contain any error messages. Gather this information with kubectl describe replicaset REPLICA_SET > replicaset.txt.

To get logs from the sidecar injector, run: kubectl logs -n istio-system -l istio=sidecar-injector --tail=100000000 > injector.log.

To get the injection template: kubectl -n istio-system get configmap istio-sidecar-injector -o jsonpath={.data.config} > template.yaml

Pilot

Collecting information

To capture logs: kubectl logs -n istio-system -l istio=pilot --tail=100000000 -c discovery > pilot.log.

To capture mesh config: kubectl get configmap -n istio-system -o jsonpath={.data.mesh} istio > meshconfig.yaml

Capture a snapshot of the Pilot dashboard. Prefer this to a screenshot if possible, as it allows zooming, etc.

Performance Issues

If you are experiencing performance issues with Pilot, such as excessive CPU or memory usage, memory leaks, etc, it is helpful to capture profiles. Please see this page for help.

Common Issues

  • Configuration not synced: first push for [...] not received in Pilot logs. This indicates Pilot did not recieve configuration from Galley. This can occur if Galley is not healthy or if the CRD is missing from the cluster.

Sidecar/Gateway problems

Collecting Information

To get configuration and stats from a proxy (gateway or sidecar):

  • kubectl exec $POD -c istio-proxy -- curl 'localhost:15000/stats' > stats
  • kubectl exec $POD -c istio-proxy -- curl 'localhost:15000/config_dump' > config_dump.json
  • kubectl exec $POD -c istio-proxy -- curl 'localhost:15000/clusters' > clusters
  • kubectl logs $POD -c istio-proxy > proxy.log

To enable debug logging, which may be useful if the default log does not provide enough information:

  • kubectl exec $POD -c istio-proxy -- curl -X POST 'localhost:15000/logging?level=debug'

Performance Issues

See Analyzing Istio Performance

Common Issues

  • gRPC config stream closed: 13 in proxy logs, every 30 minutes. This error message is expected, as the connection to Pilot is intentionally closed every 30 minutes.
  • gRPC config stream closed: 14 in proxy logs. If this occurs repeatedly it may indicate problems connecting to Pilot. However, a single occurance of this is typical when Envoy is starting or restarting.

Dev Environment

Writing Code

Pull Requests

Testing

Performance

Releases

Misc

Central Istiod

Security

Mixer

Pilot

Telemetry

Clone this wiki locally