calico icon indicating copy to clipboard operation
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

Open wschung1113 opened this issue 11 months ago • 6 comments

image

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.

image

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)

  1. sudo kubeadm init --pod-network-cidr=192.168.0.0/16 --cri-socket unix:///var/run/containerd/containerd.sock
  2. kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/tigera-operator.yaml
  3. kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.2/manifests/custom-resources.yaml
  4. 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):

wschung1113 avatar Mar 13 '24 04:03 wschung1113

Im experiencing the exact issue, any work around?

petercorrea avatar Mar 14 '24 19:03 petercorrea

I see that the default routing method if installed via "quick start" is calico. Not sure why it is looking for BIRD.

image

wschung1113 avatar Mar 15 '24 01:03 wschung1113

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 err sometime

liuxx66 avatar Mar 18 '24 07:03 liuxx66

@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

gongzixiangyuan avatar Mar 18 '24 13:03 gongzixiangyuan

@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.

liuxx66 avatar Mar 18 '24 13:03 liuxx66

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.

caseydavenport avatar Mar 18 '24 22:03 caseydavenport

@wschung1113 closing this, feel free to reopen with the mentioned logs and more info if you're still facing this issue.

coutinhop avatar Apr 02 '24 20:04 coutinhop