Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 有没有办法将K3s/法兰绒绑定到另一个接口?_Kubernetes_Networking_Interface_Flannel_K3s - Fatal编程技术网

Kubernetes 有没有办法将K3s/法兰绒绑定到另一个接口?

Kubernetes 有没有办法将K3s/法兰绒绑定到另一个接口?,kubernetes,networking,interface,flannel,k3s,Kubernetes,Networking,Interface,Flannel,K3s,我有一个K3s(v1.20.4+k3s1)集群,有3个节点,每个节点有两个接口。默认接口有一个公共IP,第二个是10.190.1.0地址。我安装了带有和不带-flannel backend=none选项的K3s,然后通过“kubectl apply-f,先前通过args将kube flannel容器绑定到内部接口”——iface部署了flannel=“。在此设置中,kube flannel吊舱获得内部接口的节点ip,但我无法通过ICPM访问其他节点上的吊舱。如果我在没有-iface arg的情况

我有一个K3s(v1.20.4+k3s1)集群,有3个节点,每个节点有两个接口。默认接口有一个公共IP,第二个是10.190.1.0地址。我安装了带有和不带-flannel backend=none选项的K3s,然后通过“kubectl apply-f,先前通过args将kube flannel容器绑定到内部接口”——iface部署了flannel=“。在此设置中,kube flannel吊舱获得内部接口的节点ip,但我无法通过ICPM访问其他节点上的吊舱。如果我在没有-iface arg的情况下部署flannel,kube flannel吊舱将从10.42.0.0网络获得一个地址。然后我可以到达其他主机的吊舱,但是流量将通过公共接口路由,这是我想要避免的。有人给我一个建议吗?

这个问题在评论部分得到了解决,但为了更好的可见性,我决定提供一个答案

如图所示,K3s默认使用法兰绒作为CNI:

默认情况下,K3s将使用flannel作为CNI运行,使用VXLAN作为默认后端。要更改CNI,请参阅配置自定义CNI一节

默认情况下,flannel选择主机上的第一个接口(查看),但我们可以使用标志覆盖此行为。
此外,我们可以使用该标志显式地设置IP地址以通告节点


我创建了一个简单的示例来说明它是如何工作的

在我的主机上,我有两个网络接口(
ens4
ens5
):

但正如我前面提到的,我们可以用
--flannel iface
标志覆盖默认的flannel接口:

kmaster:~# curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--node-ip=192.168.0.2 --flannel-iface=ens5" sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.20.4+k3s1 as release
...
[INFO]  systemd: Starting k3s
kmaster:~# kubectl get nodes -o wide
NAME      STATUS   ROLES                  AGE   VERSION        INTERNAL-IP   
kmaster   Ready    control-plane,master   64s   v1.20.4+k3s1   192.168.0.2 

在您的专用网络中是否启用了
ICMP
流量?您是从一个节点还是从另一个
Pod
尝试访问这些
Pod
?你试过用辩论吗?据我所知,这是一个论点,而不是
--iface=
。你是对的,“--flannel iface=”起作用了。非常感谢。这很好:)所以使用
--flannel iface=
解决了您的问题,现在一切都按预期工作了?正是:)现在我可以使用:
curl-sfLhttps://get.k3s.io |INSTALL_K3S_VERSION=“v1.20.4+k3s1”INSTALL_K3S_EXEC=“server--disable=traefik--flannel iface=ens10--bind address 10.190.1.5--advision address 10.190.1.5--datastore endpoint etcd--node name kube-master-01--node ip 10.190.1.5--node external ip 10.190.1.30--cluster init”sh-s-
安装第一个主节点,而ens10列出第二个接口
kmaster:~# curl -sfL https://get.k3s.io |  sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.20.4+k3s1 as release
...
[INFO]  systemd: Starting k3s
kmaster:~# kubectl get nodes -o wide  
NAME      STATUS   ROLES                  AGE   VERSION        INTERNAL-IP     
kmaster   Ready    control-plane,master   97s   v1.20.4+k3s1   10.156.15.197
kmaster:~# curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--node-ip=192.168.0.2 --flannel-iface=ens5" sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.20.4+k3s1 as release
...
[INFO]  systemd: Starting k3s
kmaster:~# kubectl get nodes -o wide
NAME      STATUS   ROLES                  AGE   VERSION        INTERNAL-IP   
kmaster   Ready    control-plane,master   64s   v1.20.4+k3s1   192.168.0.2