所以我有一个 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 会改变它的子网配置...如果 IP 和 MTU 来自 cat /run/flannel/subnet.env
,你可以告诉它。不匹配 ps aux | grep docker
(或 cat /etc/default/docker
)...在这种情况下,您需要重新配置 docker 以使用新的 flannel 配置。
首先你必须删除 docker 网络接口(interface)
sudo ip link set dev docker0 down
sudo brctl delbr docker0
接下来,您必须重新配置 docker 以使用新的 flannel 配置。
注意:有时必须手动完成此步骤(即读取/run/flannel/subnet.env 的内容,然后更改
/etc/default/docker
)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
关于kubernetes - 法兰绒的 L3 未命中和找不到路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36484714/