How to fix Felix is not live: liveness probe reporting 503 in Kubernetes
Felix is Calico's policy engine. "Felix not ready" errors indicate liveness probe failures due to timeouts or dataplane issues. Fix by reviewing logs, adjusting probe timings, and ensuring dataplane health.
Quick fix
Fixes Felix is not live: liveness probe reporting 503
kubectl logs -n calico-system ds/calico-node -c calico-node --tail=100- Check Calico node pod logs
- Check Felix liveness and readiness probe configuration
- Adjust liveness probe timeout
- Check node system resources
kubectl logs -n calico-system ds/calico-node -c calico-node --tail=100Felix is not live: liveness probe reporting 503
What this error means
Felix is Calico's main policy enforcement engine running on every node. When Felix reports not ready or not live, it means the liveness/readiness watchdog timers have not received check-ins from critical internal loops. This prevents the Calico node from becoming ready, blocking pod scheduling.
Typical symptoms
- Calico node pod shows CrashLoopBackOff or not ready state
- Pod logs show "Felix is not live" or "Felix is not ready"
- Liveness/readiness probes failing with HTTP 503
- Warnings like "report timed out" for Felix components
- Network policies not being enforced
- Calico nodes repeatedly restarting
- Health endpoint reporting non-ready status
- Felix CPU or memory usage very high
Common causes
- Internal Felix loop (dataplane, policy, discovery) not responding within timeout
- High system load causing Felix loop latency
- Dataplane integration issues with kernel or eBPF
- Memory pressure or resource exhaustion
- Kernel incompatibility with Felix requirements
- Liveness probe timeout set too low
- High number of policies or endpoints causing slow processing
- Bugs in Felix version deployed
How to fix "Felix is not live: liveness probe reporting 503"
Review detailed Felix error messages:
kubectl logs -n calico-system ds/calico-node -c calico-node --tail=100Look for "report timed out" messages indicating which component is slow.
Review probe settings in the daemonset:
kubectl get daemonset -n calico-system calico-node -o yaml | grep -A 10 "livenessProbe|readinessProbe"Default timeouts may be too aggressive for slow systems.
If system is slow, increase the probe timeout:
kubectl patch daemonset calico-node -n calico-system --type json \
-p '[{"op": "replace", "path": "/spec/template/spec/containers/0/livenessProbe/timeoutSeconds", "value": 10}]'Verify CPU and memory are not exhausted:
kubectl top nodes
kubectl top pod -n calico-system ds/calico-nodeIf resources are high, add more CPU/memory to the node.
Get more detailed logs by adjusting Felix configuration:
kubectl edit configmap -n calico-system felix-configSet logSeverityScreen to Debug:
logSeverityScreen: DebugUse calicoctl to check component health:
kubectl exec -it -n calico-system ds/calico-node -- \
wget -q -O- http://localhost:9099/livenessReturns 200 if live, 503 if not.
Ensure kernel supports Felix requirements:
uname -r
grep -i ebpf /proc/versionMinimum kernel version depends on Calico version. Check compatibility matrix.
If logs show intermittent issues, try restarting:
kubectl rollout restart daemonset/calico-node -n calico-system
kubectl rollout status daemonset/calico-node -n calico-systemAdvanced notes
For production clusters, monitor Felix health proactively using Prometheus metrics. Very large clusters (100+ nodes) with thousands of policies may have slow Felix loops - consider splitting policies or using policy templates. If Felix keeps timing out despite adjustments, upgrade Calico to latest version as performance improvements may address the issue. Track kernel compatibility as eBPF features and requirements evolve with Calico versions.
Frequently asked questions
- What does "Felix is not live: liveness probe reporting 503" mean?
- Felix is Calico's main policy enforcement engine running on every node. When Felix reports not ready or not live, it means the liveness/readiness watchdog timers have not received check-ins from critical internal loops. This prevents the Calico node from becoming ready, blocking pod scheduling.
- How do I fix "Felix is not live: liveness probe reporting 503"?
- Felix is Calico's policy engine. "Felix not ready" errors indicate liveness probe failures due to timeouts or dataplane issues. Fix by reviewing logs, adjusting probe timings, and ensuring dataplane health.
- What causes "Felix is not live: liveness probe reporting 503"?
- Internal Felix loop (dataplane, policy, discovery) not responding within timeout High system load causing Felix loop latency Dataplane integration issues with kernel or eBPF
- Is the "Felix is not live: liveness probe reporting 503" error serious?
- Yes. This is a high-severity error that usually blocks work until it is fixed, but the steps above resolve it.
Official resources & further reading
- ๐Kubernetes Official Documentation
- ๐Calico Component Logs(Official Docs)
- ๐Felix Configuration(Official Docs)
- ๐Felix Liveness Probe Issue(GitHub)