calico-node pod CrashLoopBackOff 显示 "BGP not established"

老明同学_6484

老明同学_6484

2026-01-18

396人浏览

原创

Calico-node 进入 CrashLoopBackOff 且日志显示 "BGP not established",说明 BGP 网络连接失败,需排查对等体状态、TCP 179 端口连通性、IP 自动发现配置及 BIRD 日志。

calico-node pod crashloopbackoff 显示 \

Calico-node 进入 CrashLoopBackOff 且日志显示 "BGP not established",说明 Calico 的 BGP 网络连接失败,节点无法加入集群网络拓扑。这不是单纯重启能解决的问题,需系统排查 BGP 配置与底层连通性。

检查 calico-node 是否能与其他节点建立 BGP 对等体

Calico 默认使用 Node-to-Node Mesh 模式,每个节点应与集群内其他所有节点建立 BGP 连接。执行以下命令确认对等体状态:

  • 进入任一正常运行的 calico-node 容器:kubectl exec -it -n kube-system calico-node-xxxxx -- sh
  • 运行:calicoctl node status(需容器内有 calicoctl)或更通用的:birdc show protocols
  • 观察输出中各 peer 的状态是否为 Established;若大量显示 Connect、Active 或 Idle,说明 BGP 握手卡在 TCP 连接或 OPEN 协商阶段

验证节点间 TCP 179 端口是否可达

BGP 依赖 TCP 179 端口通信。常见原因包括防火墙拦截、安全组限制、云厂商网络策略或主机 iptables 规则屏蔽。

Docker Hardening
Docker Hardening

专业的Docker安全配置生成器,符合CIS Benchmark v1.8.0标准。

下载
  • 在问题节点上执行:nc -vz 179,测试能否连通任意一个正常节点
  • 如不通,检查:
    • 云服务器安全组是否放行 179 端口(入+出)
    • 主机 firewalld/iptables/nftables 是否 DROP 了 179 端口
    • 内核参数 net.ipv4.ip_forward=1 是否启用(部分环境必须)

确认 calico 配置中的 IP 地址是否正确

Calico 使用 IP_AUTODETECTION_METHOD 自动发现本机 IP。若选错网卡(比如选到 docker0、lo 或内网管理网卡),会导致 BGP 对端地址错误,连接失败。

  • 查看当前配置:kubectl get pod -n kube-system calico-node-xxxx -o yaml | grep -A5 "IP_AUTODETECTION_METHOD\|IP"
  • 推荐显式指定:在 calico-node DaemonSet 的 env 中设置
    - name: IP<br>  value: "autodetect"<br>- name: IP_AUTODETECTION_METHOD<br>  value: "interface=eth0"
    (替换 eth0 为实际业务网卡名)
  • 也可用 CIDR 匹配:value: "can-reach=8.8.8.8" 或 "first-found",但不如 interface 明确

检查 BIRD 日志定位具体失败原因

calico-node 底层使用 BIRD 路由守护进程。直接看其日志比只看 Kubernetes 事件更精准:

  • 获取实时 BIRD 日志:kubectl logs -n kube-system calico-node-xxxxx | grep -i "bird\|bgp\|179"
  • 典型错误示例:
    "Can't bind socket to 0.0.0.0:179: Address already in use" → 其他进程占用了 179 端口
    "Network is unreachable" → 本地路由缺失,无法到达对端 IP
    "Peer x.x.x.x:179, state Idle, reason: No route to host" → 网络层不通或 ARP 失败

相关专题

更多
go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

2025.09.10

4510

10

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

2025.12.22

116

5

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

2026.06.29

228

19

轻量应用服务器和云服务器的区别
轻量应用服务器和云服务器的区别

随着科技的快速发展,越来越多的企业和个人开始依赖于服务器来托管其应用程序和网站。然而,在选择服务器时,很多人对轻量应用服务器和云服务器之间的差异不够了解。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.27

602

3

注册云服务器的作用
注册云服务器的作用

注册云服务器的作用:1、可放置公司网站、电子商务平台、APP和其他应用程序等;2、使用云服务器来存储和共享数据,不仅高度安全,而且可以随时随地在线访问;3、当内存不够时,站长可自行增加,使资源充沛,保障了页面加载速度和优质的用户体验。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.13

3944

9

云服务器的全部用途
云服务器的全部用途

云服务器的用途广泛,包括网站托管、应用程序部署、数据存储和备份、虚拟化和容器化、大数据处理、游戏服务器以及开发测试环境等。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

14999

12

云服务器价格性价比高的服务商介绍
云服务器价格性价比高的服务商介绍

性价比较高的云服务器服务商,包括阿里云、腾讯云、亚马逊AWS和华为云。这些服务商提供丰富的产品线、亲民的价格、完善的生态体系和技术支持。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

3907

9

云服务器的使用教程
云服务器的使用教程

使用云服务器需要遵循以下步骤:选择可靠的云服务提供商,注册账号并购买所需实例,配置安全组和网络,连接到服务器,配置服务器环境,定期管理和监控服务器,优化性能和成本。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

6057

10

云服务器作用介绍
云服务器作用介绍

云服务器作为云计算的关键组成部分,广泛应用于弹性计算、数据存储处理、应用程序部署托管、灾备容灾、开发测试环境、虚拟化容器化等领域。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

1745

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebSocket手册
WebSocket手册

共0课时 | 0人学习

HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 11.2万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 29.1万人学习