虚拟交换健全性检查 - NFS、BGP 和 Kubernetes

虚拟交换健全性检查 - NFS、BGP 和 Kubernetes

我有一个家庭 Kubernetes 集群,它在 Proxmox 上的 4 个虚拟机中运行。Proxmox 被标记为 VLAN 20,Kubernetes 虚拟机被标记为 VLAN 40。

Kubernetes VM 是我的路由器的 BGP 邻居,因此我可以标记 pod,然后在指定为 DMZ 空间的另外两个 VLAN 50 和 60 之一上运行。简而言之,网络如下所示:

- VLAN1: Networking Hardware
    - VLAN20: Physical Machines
        - VLAN40: Kubernetes VMs
            - VLAN50: Internal Kubernetes Deployments
            - VLAN60: External Kubernetes Deployments

效果很好,所有设备都能正常通信,还能与互联网通信。但有一个例外,那就是性能。

我的 Proxmox 服务器还通过将 ZFS 池宣传为 NFS 服务器来充当我的存储服务器。这很好用,并且对于家庭存储服务器来说,能够进行相当快的读写。例如,读取速度高达 6Gb/s。

当我过去直接在 Proxmox 服务器上运行 Docker 容器时,虚拟交换允许容器以几乎相同的速度通过主机名与 Proxmox 托管的 NFS 服务器进行交互。

此外,在我设置 VLAN 之前,Kubernetes VM 曾经与 Proxmox 本身在同一个 VLAN (1) 上运行。并且,部署在 Kubernetes 上的任何 pod 也能够以几乎相同的速度通过主机名与 Proxmox 托管的 NFS 服务器进行交互。

但是,现在我已经配置了 VLAN,并使用 BGP 在与主机不同的 VLAN 上配置我的 Kubernetes Pod,网络速度上限已被限制在 1Gb/s,甚至更糟。

我的 Ubiquiti Edgerouter Lite 和 Unifi Switch 8 都是 1Gb 设备,所以这很合理。但是,这在我的实验室里开始让人感到非常痛苦。例如,当我在库中滚动时,Plex Media Server 中的封面艺术需要 10 秒以上才能加载,因为 Kubernetes 卷将数据库安装在 NFS 服务器上。同样,Deluge 的表现也非常糟糕。Web 界面经常崩溃,任何操作(例如打开“首选项”面板或尝试查看新种子的详细信息部分)都可能需要几分钟!Deluge 的缓存设置为使用 4GB 内存,但我不确定这些性能问题是因为我的网络还是因为 Deluge 无法很好地扩展到 1100 个种子。最后,有时我的 Kubernetes 部署与数据库(Plex、Jira 等)大量交互,在运行几周后最终会出现数据库损坏的情况。这可能是由于网络延迟造成的,但我不确定。

我希望这篇文章能回答几个问题:

  1. 我知道我的网络很复杂,尤其是对于家庭实验室来说。但是,我的家庭实验室几乎完全用于工作学习。而且这个爱好对我来说很有趣,尤其是当我迎合极高的复杂程度时。但是,考虑到我可以接受这种复杂性,我只是好奇,在你看来,一切是否都配置正确。

  2. 购买 10Gb 交换机是否可以解决这个问题,或者是否还需要购买 10Gb 路由器,因为 Edgerouter 是 Kubernetes 节点的 BGP 邻居?

  3. 如果需要同时购买交换机和路由器,是否可以购买具有 BGP 功能的 10Gb 交换机?

  4. 您建议我购买什么硬件来解决此问题?理想情况下,我希望将总成本控制在 500-1,000 美元以下,但考虑到 10Gb 路由器的成本极高,这似乎不太可能。

  5. 是否可以使用不同的 Kubernetes 存储类将数据直接存储在节点上?这会是什么样子?

  6. 你能推荐一种不同的解决方案来解决我的问题吗?

答案1

回想起来:

  1. 配置很合理,但还有更好的方法。主要是将安全性分散到 Istio 等网络网格,而不是资源昂贵的虚拟分区。

2-3. 是的,只要交换机具有 BGP 功能,就可以解决问题。

  1. 是的,有很多。hostPath我想到了很多。但也包括 OpenEBS 提供的动态 ZFS 配置程序。

  2. 是的,使用 Istio 处理网络安全。

相关内容