У меня есть домашний кластер Kubernetes, который работает на 4 виртуальных машинах поверх Proxmox. Proxmox привязан к VLAN 20, виртуальные машины Kubernetes привязаны к VLAN 40.
Виртуальные машины Kubernetes являются BGP-соседями моего маршрутизатора, поэтому я могу пометить модули для работы в одной из двух других виртуальных локальных сетей, обозначенных как DMZ, 50 и 60. Вкратце, сеть выглядит так:
- VLAN1: Networking Hardware
- VLAN20: Physical Machines
- VLAN40: Kubernetes VMs
- VLAN50: Internal Kubernetes Deployments
- VLAN60: External Kubernetes Deployments
Это прекрасно работает, все может общаться друг с другом, и с Интернетом все в порядке. За одним исключением, производительность.
Мой сервер Proxmox также действует как мой сервер хранения, объявляя пул ZFS как сервер NFS. Это отлично работает и позволяет довольно быстро читать и писать для домашнего сервера хранения. Например, скорость чтения выше 6 Гбит / с.
Когда я запускал контейнеры Docker непосредственно на моем сервере Proxmox, виртуальная коммутация позволяла контейнерам взаимодействовать с сервером NFS, размещенным в Proxmox, по имени хоста почти с такой скоростью.
Кроме того, до того, как я настроил VLAN, виртуальные машины Kubernetes работали в той же VLAN (1), что и сам Proxmox. И любые модули, развернутые в Kubernetes, также могли взаимодействовать с сервером NFS, размещенным в Proxmox, по имени хоста почти с такой скоростью.
Однако теперь, когда я настроил виртуальные локальные сети и использую BGP для предоставления моих модулей Kubernetes в отдельных виртуальных локальных сетях от хостов, скорость сети была ограничена 1 Гбит / с, если не хуже.
Мои Ubiquiti Edgerouter Lite и Unifi Switch 8 - устройства 1 Гб, так что это имеет смысл. Однако в моей лаборатории это начинает казаться очень болезненным. Например, когда я прокручиваю свою библиотеку, загрузка обложки в Plex Media Server занимает более 10 секунд, потому что том Kubernetes подключает базу данных на сервере NFS. Точно так же Потоп действует невероятно плохо. Веб-интерфейс часто дает сбой, и любое действие, такое как открытие панели настроек или попытка увидеть раздел «Подробности» нового торрента, может занять несколько минут! В настройках кэша Deluge установлено использование 4 ГБ памяти, но я не уверен, связаны ли эти проблемы с производительностью с моей сетью или потому, что Deluge просто плохо масштабируется до 1100 торрентов. Наконец, иногда мои развертывания Kubernetes, которые активно взаимодействуют с базой данных (Plex, Jira и т. Д.), Заканчиваются повреждением базы данных через несколько недель работы. Предположительно, это из-за задержки в сети, но я не уверен.
Я ищу ответы на несколько вопросов в этом посте:
Я знаю, что моя сеть сложна, особенно для домашней лаборатории. Однако моя домашняя лаборатория в значительной степени используется исключительно для обучения моей работе. И это хобби доставляет мне удовольствие, особенно когда я обслуживаю непристойные уровни сложности. Однако мне просто любопытно, кажется ли вам, что все настроено правильно, учитывая тот факт, что меня устраивает сложность.
Решит ли эту проблему покупка коммутатора 10 Гбит / с или потребуется также приобрести маршрутизатор 10 Гбит / с, поскольку Edgerouter является BGP-соседом узлов Kubernetes?
Если бы необходимо было приобрести и коммутатор, и маршрутизатор, можно ли было бы вместо этого приобрести коммутатор 10 Гбит с возможностями BGP?
Какое оборудование вы бы порекомендовали приобрести для решения этой проблемы? В идеале я бы хотел, чтобы общая стоимость не превышала 500–1000 долларов, но похоже, что это невозможно, учитывая невероятно высокую стоимость маршрутизаторов на 10 Гбит / с.
Можно ли использовать другой класс хранилища Kubernetes для хранения данных непосредственно на узлах? Как бы это выглядело?
Вы бы порекомендовали другое решение моей проблемы?
Задним числом:
2-3. Да, это решит проблему при условии, что коммутатор поддерживает BGP.
Да, таких много. hostPath
приходит в голову. Но также такие вещи, как динамический провайдер ZFS, предлагаемый OpenEBS.
Да, обеспечение сетевой безопасности с Istio.