一些 Kubernetes 流量忽略 VLAN

一些 Kubernetes 流量忽略 VLAN

我有一个使用 设置的小型 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.

相关内容