How to Fix Kiali Graph Not Showing in Istio
In this tutorial, you'll learn about How to Fix Kiali Graph Not Showing in Istio. We cover key concepts, practical examples, and best practices.
The Problem
You open the Kiali dashboard and the service graph is blank, shows "No data available", or only shows a single node with no edges. The workloads and services tabs may show data but the graph is empty. Without the graph, you cannot visualize service mesh traffic.
Quick Fix
Fix 1: Prometheus Not Connected
WRONG — Kiali cannot reach Prometheus:
# In Kiali UI: Message → "Prometheus connection failed"
# Or check Kiali logs:
kubectl logs -n istio-system deployment/kiali
# time="2024-03-15T10:30:00Z" level=error msg="Prometheus is not available"
RIGHT — configure the Prometheus URL in the Kiali config:
kubectl get configmap kiali -n istio-system -o yaml
spec:
external_services:
prometheus:
url: "http://prometheus.istio-system:9090"
Fix 2: No Traffic in the Mesh
WRONG — expecting a graph without generating traffic:
# The Kiali graph shows only nodes with no edges when there is no
# traffic flowing through the mesh
RIGHT — generate traffic to see the graph:
# From inside the cluster:
kubectl exec deploy/sleep -- curl -s http://productpage:9080/ | head -1
# From outside:
curl -s http://istio-ingressgateway/productpage | head -1
Now Kiali should show edges between services.
Fix 3: Namespace Not Selected
WRONG — the namespace is not in Kiali's discovery list:
# In Kiali UI, the graph shows "No data" because the namespace
# is not selected in the dropdown
RIGHT — check namespace accessibility:
# Ensure the namespace is labeled:
kubectl label namespace default istio-injection=enabled
# In Kiali UI: Select the namespace from the dropdown
# If it does not appear, the user lacks permissions:
kubectl get namespace default -o yaml | grep kiali
Fix 4: Istio Metrics Not Enabled
WRONG — Istio telemetry is disabled:
# No metrics are generated for the mesh
kubectl get pods -n istio-system | grep istiod
# istiod is running, but telemetry is disabled in MeshConfig
RIGHT — enable telemetry in Istio config:
kubectl edit configmap istio -n istio-system
data:
mesh: |-
enablePrometheusMerge: true
defaultConfig:
tracing:
zipkin:
address: zipkin.istio-system:9411
Fix 5: Kiali Version Mismatch
# Kiali and Istio versions are incompatible
# Kiali logs: "unable to fetch istio status"
RIGHT — match Kiali version to Istio version:
# Check Istio version:
istioctl version
# client version: 1.22.0
# control plane version: 1.22.0
# Install matching Kiali:
kubectl apply -f https://raw.githubusercontent.com/kiali/kiali/v1.73/operator/deploy/kiali.yaml
Fix 6: Service No Istio Sidecar
Services not part of the mesh (no sidecar) do not appear in the graph with traffic edges.
kubectl get pods -l app=my-service -o yaml | grep -c "istio-proxy"
# 0 — no sidecar installed
RIGHT — enable sidecar injection:
kubectl label namespace default istio-injection=enabled --overwrite
kubectl rollout restart deployment my-service
Use DodaTech's Mesh Topology Viewer to analyze service dependencies, traffic flows, and latency between services in your Istio mesh.
Prevention
- Ensure Prometheus is running and accessible to Kiali.
- Generate at least some traffic to populate the graph.
- Verify namespace is selected in Kiali's scope.
- Keep Kiali and Istio versions in sync.
- Label namespaces for Istio injection.
Common Mistakes with kiali graph
- Forgetting that lazy evaluation defers computation until the value is forced, causing space leaks with unevaluated thunks
- Using
returnto exit a function early instead of wrapping a pure value in the monad - Mixing let bindings with <- bindings in do notation, producing type errors
These mistakes appear frequently in real-world K8S code. DodaTech's contributors have identified these patterns through analysis of open-source projects and production systems.
Practice Exercise
Write a pure function that safely divides two integers using Maybe, then test it with edge cases like division by zero and negative numbers.
This exercise reinforces the concepts covered in this guide. Try implementing it before checking online solutions.
FAQ
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro