首页新闻找找看学习计划

k8s 集群又出现 dns 解析问题

0
悬赏园豆:30 [待解决问题]

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

请问如何解决这个问题?

k8s
问题补充:

重启出问题的 node 后恢复正常, 对应的 pod calico-node-znpnzREADY 值 从 0/1 变为 1/1

博客园团队的主页 博客园团队 | 老鸟四级 | 园豆:4190
提问于:2020-01-04 13:53
< >
分享
所有回答(3)
0

参考下这个:https://github.com/projectcalico/calico/issues/2561
不过更关键的是,你们k8s集群部署时部署步骤和关键参数是否都记录下来了。k8s集群很多的问题都是配置问题,尤其是网络这块。排查的时候要对照着排查。

雪雁 | 园豆:50 (初学一级) | 2020-01-04 14:42

现在这个出问题的集群是重新创建的高可用集群,部署过程进行了很多记录

支持(0) 反对(0) 博客园团队 | 园豆:4190 (老鸟四级) | 2020-01-04 16:07
0

首先我对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

too-bug | 园豆:202 (菜鸟二级) | 2020-01-04 15:55

大翻船时的 k8s 集群用的就是 flannel 网络

支持(0) 反对(0) 博客园团队 | 园豆:4190 (老鸟四级) | 2020-01-04 16:05
0

可用信息太少,可以贴出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在多网络接口时自动检测到错误的网络接口,导致网络无法连通

kebyn | 园豆:208 (菜鸟二级) | 2020-01-06 16:39

您好,后来重启节点后恢复了,等下次出现才能拿到日志。
我们用的是阿里云服务器,就一个网络接口 eth0

支持(0) 反对(0) 博客园团队 | 园豆:4190 (老鸟四级) | 2020-01-06 20:51

@博客园团队: calico网段默认是192.168.0.0/16和阿里云的内网网段是不是冲突了

支持(0) 反对(0) kebyn | 园豆:208 (菜鸟二级) | 2020-01-08 19:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册