Cloud Native 6 min read

Fix Calico Node Not Ready: BGP Not Established Error in Kubernetes

This guide explains why a Calico pod shows "BIRD is not ready: BGP not established" in a Kubernetes cluster, identifies the missing node interface detection as the root cause, and provides step‑by‑step instructions to adjust the IP autodetection method and restore pod health.

Full-Stack DevOps & Kubernetes
Full-Stack DevOps & Kubernetes
Full-Stack DevOps & Kubernetes
Fix Calico Node Not Ready: BGP Not Established Error in Kubernetes

The problem appears when accessing the Kubernetes dashboard after a Calico pod is recreated, showing the error

calico/node is not ready: BIRD is not ready: BGP not established with 172.16.0.20,172.16.0.30

. The pod remains in 0/1 status and cannot establish BGP peering.

Root Cause

Calico fails to detect the actual network interface of the node, so it registers an incorrect nodeIP. This prevents BGP sessions from being established between nodes.

Solution

Modify the Calico network plugin’s IP autodetection method in the Calico yaml configuration:

Change the IP_AUTODETECTION_METHOD value from the default first-found to either can-reach or interface=eth1 (replace eth1 with the actual interface name).

Example snippet to add to calico.yaml:

# Modify calico.yaml
- name: IP_AUTODETECTION_METHOD
  value: "interface=eth1"
- name: CLUSTER_TYPE
  value: "k8s,bgp"
- name: IP
  value: "autodetect"
- name: CALICO_IPV4POOL_IPIP
  value: "Always"
- name: CALICO_IPV4POOL_VXLAN
  value: "Never"

After editing, apply the configuration:

kubectl apply -f calico.yaml

Verification

Run kubectl get pod -n kube-system to confirm the Calico controller and node pods are Running with 1/1 ready status. Access to cluster resources should be restored.

Final pod list example:

NAME                                 READY   STATUS    RESTARTS   AGE
calico-kube-controllers-578894d4cd-rsgqd   1/1   Running   0   115d
calico-node-6ktn4                           1/1   Running   0   26m
calico-node-8k5z8                           1/1   Running   0   26m
calico-node-g87hc                           1/1   Running   0   1m

With the corrected autodetection method, the Calico nodes establish BGP peering, and the Kubernetes dashboard and other resources become reachable again.

cloud-nativeTroubleshootingNetworkingBGPCalico
Full-Stack DevOps & Kubernetes
Written by

Full-Stack DevOps & Kubernetes

Focused on sharing DevOps, Kubernetes, Linux, Docker, Istio, microservices, Spring Cloud, Python, Go, databases, Nginx, Tomcat, cloud computing, and related technologies.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.