在我的测试群集上,我使用Kubernetes作为覆盖网络的Flannel。我还将Wireguard用于每个kubernetes节点之间的vpn和p2p连接。
所有节点到节点和容器到容器的通信都可以正常工作,我可以确认该通信通过wg0
(wireguard)接口。流量基本上是从容器流向docker0
到cni0
(我认为)到flannel.1
到wg0
到服务器外部。
我的问题是,每当我使用systemctl restart wg-quick@wg0
重新启动wireguard时,wg0
接口都会被快速删除并重新添加,这会导致flannel.1
接口完全消失。
我可以通过运行kubectl --namespace=kube-system delete pod -l app=flannel
来恢复flannel.1界面,但这并不总是很快,跨主机网络连接会在新的Pod运行之前中断。
我通过应用https://github.com/coreos/flannel/blob/v0.10.0/Documentation/kube-flannel.yml在kubernetes上部署了法兰绒,但是在法兰绒args中添加了--iface=wg0
。
是否有一种方法可以让法兰绒识别出缺少的接口并将其备份,或者采取其他解决方法来获得类似的结果?