calico
calico copied to clipboard
Readiness probe failed: calico/node is not ready: BIRD is not ready: Error querying BIRD: unable to connect to BIRDv4 socket: dial unix /var/run/calico/bird.ctl: connect: connection refused
Hello,
I've installed the latest version of calico as the CNI via "Quick Start" (https://docs.tigera.io/calico/latest/getting-started/kubernetes/quickstart) for my 1 master, 1 worker kubernetes cluster.
However, after joining my worker node thru kubeadm join, BGP does not seem to be established. From the error log, it must be that BIRD service is not available.
Even after typing "systemctl status bird", system replies "Unit bird.service could not be found".
So by installing calico CNI via "quick start" is bird service supposed to be installed separately by my own?
Another thing happening is that pods created from a node cannot communicate with pods on another node or the other node itself. I am guessing this is because CNI is not set up on my k8s cluster properly.
so I tried changing the autodetect methods but didn't work. I am not totally sure if I changed the autodetect methods correctly. First I went with the default method "first-found" and it definitely did not work. Then I moved on to interface: eth0 from evidence of the output of command "ip a" attached below.
Also I have tried "kubernetes: NodeInternalIP" but didn't work.
Thanks for reading and hope I can find a solution here!
Expected Behavior
calico-nodes deployed on each node working without "BIRD is not ready" error. Also for pods created from different nodes to communicate with each other.
Current Behavior
calico-node is stuck in error and inter-node pods cannot communicate to each other.
Possible Solution
I was thinking of reinstalling calico CNI via "the hard way" since "quick start" doesn't work and seem to have some daemons missing such as BIRD.
Steps to Reproduce (for bugs)
- sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --cri-socket unix:///var/run/containerd/containerd.sock
- kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/tigera-operator.yaml
- kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/custom-resources.yaml
- kubeadm join [worker node]
Context
I am trying to deploy MongoDB pod but hindered by CNI error.
Your Environment
- Calico version 3.27.2
- Orchestrator version (e.g. kubernetes, mesos, rkt): k8s 1.26.14
- Operating System and version: Ubuntu 20.04 for both master and worker
- Link to your project (optional):
Im experiencing the exact issue, any work around?
I see that the default routing method if installed via "quick start" is calico. Not sure why it is looking for BIRD.
I also faced this problem!
My kubernetes version v.1.21.10,docker-ce v.20.10.13,calico v.3.19.4
My all nodes is ready, but i added a new working node,The question arose:"calico/node is not ready: BIRD is not ready: Error querying BIRD: unable to connect to BIRDv4 socket: dial unix /var/run/calico/bird.ctl: connect: connection refused"。
My new network of working node is up and down
@wschung1113 Maybe you can check whether the bird process is started and whether port 179 is listening normally.
[root@master1 ~]# ps -elf | grep bird 4 S root 217876 214785 1 80 0 - 17497 do_pol Mar16 ? 00:41:43 /usr/bin/bird -R -s /var/run/calico/bird.ctl -d -c /etc/calico/confd/config/bird.cfg 0 S root 792885 61138 0 80 0 - 6099 pipe_r 21:22 pts/10 00:00:00 grep --color=auto bird [root@master1 ~]# [root@master1 ~]# netstat -anp | grep :179 | grep LISTEN
If bird does not start normally, you can check the logs
kubectl logs -nkube-system calico-node-xxx
@wschung1113 Maybe you can check whether the bird process is started and whether port 179 is listening normally.@wschung1113 也许你可以检查一下 bird 进程是否启动,端口 179 是否正常监听。
[root@master1 ~]# ps -elf | grep bird 4 S root 217876 214785 1 80 0 - 17497 do_pol Mar16 ? 00:41:43 /usr/bin/bird -R -s /var/run/calico/bird.ctl -d -c /etc/calico/confd/config/bird.cfg 0 S root 792885 61138 0 80 0 - 6099 pipe_r 21:22 pts/10 00:00:00 grep --color=auto bird [root@master1 ~]# [root@master1 ~]# netstat -anp | grep :179 | grep LISTEN
Of course, my bird server is running, the port 179 is listening. Yeah, I solved the problem, I added the new working node, and than I command "kubectl delete -f calico.yaml; kubectl apply -f calico.yaml", All is well.
So by installing calico CNI via "quick start" is bird service supposed to be installed separately by my own?
Nope, Calico packages BIRD within the calico/node container so no need to install anything else. You should NOT expect systemctl
on the host to be aware of BIRD, as it's being run within a container managed by Kubernetes.
For anyone encountering this, the first step is to look at the calico/node logs on the affected node to see what's up.
@wschung1113 closing this, feel free to reopen with the mentioned logs and more info if you're still facing this issue.