k8s 集群没有接入负载,却在部署时有一个节点因为 dns 解析问题而无法启动 pod 。
执行 kubectl -n kube-system get ev
命令显示下面的错误信息:
LAST SEEN TYPE REASON OBJECT MESSAGE
4m2s Warning Unhealthy pod/calico-node-znpnz (combined from similar events): Readiness probe failed: calico/node is not ready: BIRD is not ready: BGP not established with 10.0.1.81,10.0.1.82,10.0.1.252,10.0.1.19,10.0.1.202020-01-04 05:43:33.459 [INFO][629] health.go 156: Number of node(s) with BGP peering established = 0
请问如何解决这个问题?
重启出问题的 node 后恢复正常, 对应的 pod calico-node-znpnz
的 READY
值 从 0/1
变为 1/1
参考下这个:https://github.com/projectcalico/calico/issues/2561
不过更关键的是,你们k8s集群部署时部署步骤和关键参数是否都记录下来了。k8s集群很多的问题都是配置问题,尤其是网络这块。排查的时候要对照着排查。
现在这个出问题的集群是重新创建的高可用集群,部署过程进行了很多记录
首先我对bgp不熟,就只从k8s的角度分析一下
calico网络有两种模式,隧道模式的IPIP 纯三层的BGP,默认情况下应该是IPIP,会有一个node to node 的 mesh
event中有Unhealthy 的信息以及0/1 信息 可以知道calico的健康检测没有通过,
calico的yaml中有这一段健康检测的声明
readinessProbe:
exec:
command:
- /bin/calico-node
- -bird-ready
- -felix-ready
periodSeconds: 10
具体要看一下bird的报错
另外刚开始建议用简单的flannel
这个文章可以看看
https://www.cnblogs.com/goldsunshine/p/10701242.html
大翻船时的 k8s 集群用的就是 flannel 网络
可用信息太少,可以贴出kubectl -n kube-system logs calico-node-znpnz
日志吗
通过Number of node(s) with BGP peering established = 0
搜索
参考了这个:calico/node is not ready: BIRD is not ready: BGP not established (Calico 3.6 / k8s 1.14.1)
其中提问者改变网段后问题解决了
https://github.com/projectcalico/calico/issues/2561#issuecomment-485648104
有其他人通过改变绑定的网络接口解决问题
https://github.com/projectcalico/calico/issues/2561#issuecomment-531537534
# Specify interface
- name: IP_AUTODETECTION_METHOD
value: "interface=eth1"
总结一下,应该是calico在多网络接口时自动检测到错误的网络接口,导致网络无法连通
您好,后来重启节点后恢复了,等下次出现才能拿到日志。
我们用的是阿里云服务器,就一个网络接口 eth0
。
@博客园团队: calico网段默认是192.168.0.0/16
和阿里云的内网网段是不是冲突了