Kubernetes 集群中某个节点出现 Error querying BIRD: unable to connect to BIRDv4 socket

news/2024/11/28 2:11:06/

1. 问题描述

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 refusedReadiness probe failed: 2023-05-04 22:13:23.706 [INFO][224] confd/health.go 180: Number of node(s) with BGP peering established = 0
calico/node is not ready: BIRD is not ready: BGP not established with 192.168.0.145,192.168.0.233,172.26.32.235

2. 环境信息

组件版本
Kubernetesv1.24.2
Containerd1.6.18
Linux Kernel5.4

3. 问题分析

3.1 定位原因

发现 Kubernetes 容器集群中有一个节点出现 calico-node异常的情况,查看该 Pod 的描述信息:

kubectl describe pod calico-node-hd7wm -n kube-system

提示 calico/node 连接 BIRDv4 socket 被拒绝。有网友反映是 calico 配置参数 IP_AUTODETECTION_METHOD 的值需要设置为实际网卡的网卡名称,于是检查配置:

            - name: CLUSTER_TYPEvalue: "k8s,bgp"# Auto-detect the BGP IP address.- name: IPvalue: "autodetect"- name: IP_AUTODETECTION_METHODvalue: "interface=eth0"

发现 calico 的配置已经是实际的网卡名称,网卡信息如下:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.200  netmask 255.255.255.0  broadcast 192.168.0.255ether fa:16:3e:e9:41:0a  txqueuelen 1000  (Ethernet)RX packets 951363626  bytes 577280343840 (537.6 GiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 967287474  bytes 178201446365 (165.9 GiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

查看 calico-node 在节点上的 bird 进程,发现 calico-node 在节点上的进程已经启动,于是猜测可能是这个进程已经假死。关于 bird 进程的更多信息请参考:基于 BGP 实现 Calico 的 IPIP 网络

[root@k8s-master1 cni]# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:179             0.0.0.0:*               LISTEN      2246613/bird        
......

3.2 解决办法

  • 干掉出问题的节点上 bird 进程,让 calico-node 自动重启一个新的 bird 进程。bird 进程号如上所示是:2246613
kill -9 2246613
  • 删除问题节点上的 calico-node Pod
kubectl delete  pod calico-node-hd7wm  -n kube-system

4. 结论

查看 calico-node 运行状态

kubectl get pods -A

calico-node 运行信息如下:

NAMESPACE              NAME                                        READY   STATUS    RESTARTS        AGE
kube-system            calico-node-9zhv2                           1/1     Running   5 (53d ago)     76d
kube-system            calico-node-dnvlc                           1/1     Running   0               4m1s
kube-system            calico-node-pt9qp                           1/1     Running   0               56d
kube-system            calico-node-wzq2p                           1/1     Running   0               56d
......

在这里插入图片描述

此时 calico-node 已经全部正常,刚才出问题的节点已经处于 Running 状态。查看之前出问题的节点上的 bird 进程状态

netstat -ltnp | grep bird

bird 进行信息如下:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:179             0.0.0.0:*               LISTEN      2253102/bird        
......

bird 进程已经重新创建,新的进程号是 2253102。通过 kill bird 假死进程,重新生成新的 bird 进程解决了上述问题。


http://www.ppmy.cn/news/61836.html

相关文章

带你彻底理解Spark的分区

前言 我:什么是RDD? 面试者:RDD是被分区的,由一系列分区组成… … 我:你怎么理解分区? 面试者:… 我:Spark中有哪些可以实现分区的方法?分别使用的场景是什么? 面试者… 我:Spark默认分区数是多少?如何保证一个分区对应一个文件? 面试者… 我:…谢谢您的面试,回…

【Git】制造冲突以及解决冲突的详细方法

介绍 这里是小编成长之路的历程&#xff0c;也是小编的学习之路。希望和各位大佬们一起成长&#xff01; 以下为小编最喜欢的两句话&#xff1a; 要有最朴素的生活和最遥远的梦想&#xff0c;即使明天天寒地冻&#xff0c;山高水远&#xff0c;路远马亡。 一个人为什么要努力&a…

干掉Config server的两个节点之后会发生什么?

当前MongoDB集群的测试环境的架构有两个分片&#xff0c;每个分片是三个节点的副本集&#xff0c;一个mongos&#xff0c;mongoDB v4.4.20 config server也是三个节点的副本集&#xff08;configReplSet&#xff09;&#xff0c;直接停掉两个节点之后&#xff0c;关闭步骤的返…

Unity 后处理(Post-Processing) -- (3)挑战:创建局部后处理Volume

为何使用局部Volume 在前面两节中&#xff0c;我们使用了一个Global Volume来应用后处理&#xff0c;其作用范围是整个场景。有些时候&#xff0c;我们需要实现当角色靠近某个地点后&#xff0c;进行一些特殊的后处理。这时我们就需要使用Local Volume来实现这个功能。 举个例子…

手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)

工具类包含以下方法&#xff1a; - stringToDate: 将字符串转换为java.util.Date类型- dateToString: 将java.util.Date类型转换为字符串- stringToLocalDateTime: 将字符串转换为LocalDateTime类型- localDateTimeToString: 将LocalDateTime类型转换为字符串- dateToLocalDat…

Apache Doris学习记录

1. Doris基础学习 中文官网:https://doris.apache.org/zh-CN/docs/dev/summary/basic-summary/ 1.1 doris 简介 Apache Doris 是一个现代化的 MPP(Massively Parallel Processing&#xff0c;即大规模并行处理) 分析型数据库产品 亚秒级响应时间即可获得查询结果 可以支持 10PB…

【嵌入式环境下linux内核及驱动学习笔记-(9-内核定时器)】

目录 1、时钟tick中断等概念2、延时机制2.1 短延时&#xff08;忙等待类--非阻塞害&#xff09;2.1.1 ndelay 忙等待延迟多少纳秒2.1.2 udelay 忙等待延迟多少微秒2.1.3 mdelay 忙等待延迟多少毫秒 2.2 长延迟&#xff1a;忙等待 &#xff08;非阻塞类&#xff09;2.2.1 time_a…

ChatGPT :国内免费可用 ChatGPT +Midjourney绘图

前言 ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;美国OpenAI 研发的聊天机器人程序 &#xff0c;于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过理解和学习人类的语言来…