我有一个使用 设置的小型 Kubernetes 集群kubeadm
。我的服务器通过 VLAN 连接,我的提供商允许我将服务器添加到 VLAN 中。
VLAN 添加了一个网络适配器(ens6
),我在其veth0
上创建了一个虚拟适配器(),该虚拟适配器为我 VLAN 上的每台服务器分配一个 IP。
相关netcfg
内容如下:
vlans:
veth0:
id: 0
link: ens6
addresses: [10.96.0.1/24]
服务器 01 的 IP 为 10.96.0.1,服务器 02 的 IP 为 10.96.0.2。
使用检查流量,我看到集群中服务器之间的接口bmon
上有一些流量。veth0
RX (S01) TX (S01)
4.77GiB 60.28GiB
RX (S02) TX (S02)
59.70GiB 5.48GiB
查看我的公共 LAN 接口(ens3
),我发现我的集群的流量非常高,而且几乎没有部署任何应用程序:
RX (S01) TX (S01)
46.60GiB 304.84GiB
RX (S02) TX (S02)
309.69GiB 40.86GiB
我使用此命令引导了集群kubeadm init --pod-network-cidr 10.98.0.0/16 --apiserver-advertise-address=10.96.0.1 --apiserver-cert-extra-sans=<public ip for remote kubeadm>
。另一台服务器也使用 VLAN IP 加入。
检查两台服务器上的ens3
使用情况nethogs
,我看到来自kubelet
和的外部流量kube-apiserver
。
如何验证两个节点是否通过 VLAN 进行通信,如何才能最好地调试这些过量网络流量的来源?如何才能完全限制集群流量到虚拟 LAN?
答案1
- 您可以使用选项 来验证传入流量是否带有
VLAN
标签 。 这将显示标头的详细信息 :tcpdump
-e and vlan
VLAN
# tcpdump -i eno1 -nn -e vlan
To capture the issue live.
或者
# tcpdump -i eno1 -nn -e vlan -w /tmp/vlan.pcap
To write to the capture to a file.