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

这篇具有很好参考价值的文章主要介绍了Kubernetes 集群中某个节点出现 Error querying BIRD: unable to connect to BIRDv4 socket。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 refused

Readiness 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. 环境信息

组件 版本
Kubernetes v1.24.2
Containerd 1.6.18
Linux Kernel 5.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_TYPE
              value: "k8s,bgp"
            # Auto-detect the BGP IP address.
            - name: IP
              value: "autodetect"
            - name: IP_AUTODETECTION_METHOD
              value: "interface=eth0"

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

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.200  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 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 0
        TX 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
......

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

此时 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 进程解决了上述问题。文章来源地址https://www.toymoban.com/news/detail-434177.html

到了这里,关于Kubernetes 集群中某个节点出现 Error querying BIRD: unable to connect to BIRDv4 socket的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kubernetes集群划分节点

    Kubernetes(K8s)是一个用于管理容器化应用程序的开源平台,可以帮助开发人员更轻松地部署、管理和扩展应用程序。在Kubernetes中,集群划分是一种重要的概念,可以帮助我们更好地组织和管理集群中的节点和资源。 本文将介绍如何使用Kubernetes对集群进行划分,并提供详细的

    2024年02月05日
    浏览(83)
  • K8S集群etcd 某个节点数据不一致如何修复 —— 筑梦之路

      二进制方式安装的k8s集群,etcd集群有3个节点,某天有一台机器hang住了,无法远程ssh登陆,于是被管理员直接重启了,重启后发现k8s集群删除一个deployment应用,多次刷新一会有,一会没有,于是在3个节点上执行etcd命令去查询该数据,发现被重启的节点上仍存在删除的该应

    2024年02月05日
    浏览(44)
  • 《Kubernetes故障篇:unable to retrieve OCI runtime error》

    1、环境信息如下: 操作系统 K8S版本 containerd版本 Centos7.6 v1.24.12 v1.6.12 2、报错信息如下: Warning FailedCreatePodSandBox 106s (x39 over 10m) kubelet (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to create containerd task: failed to create shim task: OCI runtime create failed

    2024年02月14日
    浏览(39)
  • 【二】kubernetes master单节点拓展为集群

    #服务器 #部署 #云原生 #k8s 栏目全部章节 一、ubuntu20.04上搭建containerd版( 1.2.4 以上)k8s及kuboard V3 二、kubernetes master单节点拓展为集群 三、kubernetes kuboard部署分布式系统 接上文中,我们已经部署好了单节点master的k8s集群,在生产环境中,单节点的master肯定是不行的,那么我们

    2024年02月10日
    浏览(63)
  • Kubernetes系列-如何在k8s集群中发现节点是主节点还是工作节点

    在K8s集群中,每个集群都有一组节点,其中一些是master节点,另一些是工作节点,那么如何区别哪些是master节点,哪些是工作节点?有三种判断方式: 1 进程方式 根据系统进程确认,运行 api-server 、 kube-controller-management 和 kube-scheduler 的 node 是 master 节点。运行kubelet和kube-p

    2024年02月13日
    浏览(46)
  • 【云原生】Kubernetes二进制--多节点Master集群高可用

    作用 :实现高可用 apiserver 对外安全通信端口 6443 ,对内端口 8080 1、实现高可用方法 etcd:etcd群集至少是3副本,奇数台,通过raft算法,保证数据的一致性 node节点:承载业务,跟Master进行对接 master节点:高可用使用keepalived+LB方案,keepalived能够提供VIP和主备,LB实现负载均衡

    2024年02月04日
    浏览(45)
  • 删除Docker容器里面镜像出现:Error response from daemon: conflict: unable ...

    当我们拉取的镜像有问题时,想删除镜像,进行重新拉取时。删除镜像时候发现执行普通的docker rmi [镜像id/镜像名字];时候出现类似于如下的错误: 这是因为:在使用docker删除本地某个镜像时,出现了error报错,根据意思应该是这个镜像有个依赖,需要删除依赖后再删除此镜

    2024年02月11日
    浏览(78)
  • 云原生 黑马Kubernetes教程(K8S教程)笔记——第一章 kubernetes介绍——Master集群控制节点、Node工作负载节点、Pod控制单元

    参考文章:kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为

    2024年02月04日
    浏览(57)
  • Kubernetes实战(十四)-k8s高可用集群扩容master节点

    k8s 集群是由一组运行 k8s 的节点组成的,节点可以是物理机、虚拟机或者云服务器。k8s 集群中的节点分为两种角色:master 和 node。 master 节点:master 节点负责控制和管理整个集群,它运行着一些关键的组件,如 kube-apiserver、kube-scheduler、kube-controller-manager 等。master 节点可以有

    2024年02月03日
    浏览(53)
  • 云原生之容器编排实践-基于CentOS7搭建三个节点的Kubernetes集群

    前面采用 minikube 作为 Kubernetes 环境来体验学习 Kubernetes 基本概念与操作,这样避免了初学者在裸金属主机上搭建 Kubernetes 集群的复杂度,但是随着产品功能的逐渐完善,我们需要过渡到生产环境中的 K8S 集群模式;而在实际上生产环境之前,我们先在本地虚拟机上进行了环境

    2024年02月19日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包