我有一个K3 s(v1.20.4+ k3 s1)集群,有3个节点,每个节点有两个接口。默认的接口有一个公网IP,第二个是10.190.1.0地址。我安装了K3 s,有和没有-flannel-backend=none选项,然后通过“kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml"部署flannel,之前通过args“--iface="将kube-flannel容器绑定到内部接口。在这个设置中,kube-flannel pod获得了内部接口的node-ip,但我无法通过ICPM到达其他节点上的pod。如果我部署flannel而不使用-iface arg,kube-flannel pod会从www.example.com网络中获取地址10.42.0.0。然后我可以访问其他主机的pod,但流量将通过公共接口路由,这是我希望避免的。有人给我小费吗?
2条答案
按热度按时间6tqwzwtp1#
这个问题在评论部分得到了解决,但是为了更好的可见性,我决定提供一个答案。
正如我们在K3 s文档中看到的,K3 s默认使用法兰绒作为CNI:
默认情况下,K3 s将使用flnel作为CNI运行,使用VXLAN作为默认后端。要更改CNI,请参阅有关配置自定义CNI的章节。
默认情况下,flannel选择主机上的第一个接口(请参阅flannel文档),但是我们可以使用--flannel-iface标志覆盖此行为。
此外,我们可以使用--node-ip标志显式地设置IP地址以通告节点。
我创建了一个简单的例子来说明它是如何工作的。
在我的主机上,我有两个网络接口(
ens4
和ens5
):字符串
在不设置
--flannel-iface
和--node-ip
标志的情况下,flannel将选择第一个接口(ens4: 10.156.15.197
):型
但正如我之前提到的,我们可以用
--flannel-iface
标志覆盖默认的flannel接口:型
irlmq6kh2#
感谢@matt_j的解决方案。对我很有效。您可以在安装k3 s集群后应用这些更改,只需更改主节点上的systemd k3s.service和工作节点上的k3 s-agent.service。
问题:安装k3 s服务器而不使用额外的选项将导致flannel选择默认的网络接口,在我的情况下是'enp 0 s3',我希望'enp 0 s8'是flannel的默认网络接口。
注意:在本例中,master_hostname= docker 01,master_ip=192.168.56.10,worker_hostname= docker 02,worker_ip=192.168.56.20
sudo nano /etc/systemd/system/k3s.service
字符串
sudo nano /etc/systemd/system/k3s-agent.service
型
更改ExecStart后,可以通过以下方式对所有节点应用更改:
sudo systemctl daemon-reload
sudo systemctl restart