【问题标题】:L3 miss and Route not Found for flannel法兰绒的 L3 未命中和找不到路线
【发布时间】:2016-07-28 20:07:29
【问题描述】:

所以我有一个 Kubernetes 集群,我正在使用 Flannel 作为覆盖网络。它一直运行良好(实际上已经将近一年),然后我修改了一项服务以拥有 2 个端口,突然间我得到了一个完全不同的服务,该服务以前可以工作,但我没有编辑:

<Timestamp> <host> flanneld[873]: I0407 18:36:51.705743 00873 vxlan.go:345] L3 miss: <Service's IP>
<Timestamp> <host> flanneld[873]: I0407 18:36:51.705865 00873 vxlan.go:349] Route for <Service's IP> not found 

这有共同的原因吗?我正在使用 Kubernetes 1.0.X 和 Flannel 0.5.5,我应该提到只有一个节点有这个问题,其余节点都很好。坏节点的 kube-proxy 也说找不到服务的端点。

【问题讨论】:

  • 顺便说一句,对于那些认为这属于服务器故障的人,我也这么认为,但他们甚至没有这些标签。
  • 您是否真的在连接服务或其端点时遇到问题,或者只是询问 flannel 中的日志行?服务 VIP 是完全虚拟的,被 kubeproyx 拦截,并转换为端点 ip。只要 flannel 可以路由这些端点 ip,您应该就可以了(但肯定会有更深层次的事情发生)。
  • 我在问以上所有问题。我无法 ping 服务的 ip,并且那些重复的日志行是唯一的异常。
  • 如果您先执行cat /run/flannel/subnet.env,然后执行ps aux | grep docker,这两个IP 是否匹配?
  • 我应该提到这也是法兰绒上的一个开放问题github.com/coreos/flannel/issues/427

标签: kubernetes iptables flannel


【解决方案1】:

有时 flannel 会更改它的子网配置...如果来自 cat /run/flannel/subnet.env 的 IP 和 MTU 与 ps aux | grep docker(或 cat /etc/default/docker)不匹配,您可以告诉这一点...在这种情况下,您需要重新配置docker 使用新的 flannel 配置。

首先你必须删除 docker 网络接口

sudo ip link set dev docker0 down
sudo brctl delbr docker0

接下来您必须重新配置 docker 以使用新的 flannel 配置。
注意:有时这一步必须手动完成(即读取 /run/flannel/subnet.env 的内容,然后更改 @ 987654325@)

source /run/flannel/subnet.env

echo DOCKER_OPTS=\"-H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU}\" > /etc/default/docker

最后重启docker

sudo service docker restart

【讨论】:

  • 希望这可以解决您的问题...如果没有,我想我还是会发布,因为我们遇到了这个问题很多
  • 有什么预防方法吗?
  • 不抱歉,我们从未找到快速解决方案。
  • fwiw 如果您使用 NETWORK_PROVIDER=flannel ./cluster/kube-up.sh 设置集群,这应该只适用于支持 NETWORK_PROVIDER 的 gce/clods。如果没有通用仲裁器,这场竞赛很难解决,在上面的例子中就是 kublet。
猜你喜欢
  • 2016-03-30
  • 2019-09-14
  • 2019-04-14
  • 2019-01-16
  • 1970-01-01
  • 2020-05-21
  • 2021-06-24
  • 1970-01-01
  • 2017-01-15
相关资源
最近更新 更多