Kube-vip в сети кластера k3s — VIP-персоны из разных сетей
Я пытаюсь настроить простой кластер Kubernetes в нашей собственной инфраструктуре. Мы решили использовать k3s, и кажется, что kube-vip может удовлетворить наши потребности в качестве плоскости управления и балансировщика служб. Я начинаю с 5 виртуальных машин: 3 для плоскости управления и 2 рабочих.
Проблема, с которой я сталкиваюсь при использовании kube-vip, заключается в том, что все виртуальные машины имеют только частные IP-адреса (172.16.30.x/24 со шлюзом 172.16.30.1), тогда как мне нужен kube-vip для назначения общедоступных IP-адресов (например, 1.2.3.x/25 со шлюзом 1.2.3.1). У меня есть только ограниченное количество (около 3) общедоступных IP-адресов, которые я могу использовать для этого проекта.
Насколько я понимаю, не было бы проблем, если бы каждый узел кластера имел свой «нормальный» IP-адрес из того же диапазона, что и VIP-адреса, которые я пытаюсь назначить. Однако это было бы пустой тратой и, возможно, проблемой безопасности.
Мне удалось настроить kube-vip для правильной настройки общедоступного IP-адреса на правильном интерфейсе, однако у меня возникла проблема со шлюзом по умолчанию. В состоянии по умолчанию (без назначенного общедоступного IP-адреса) виртуальная машина имеет шлюз по умолчанию 172.16.30.1. Когда IP-адрес назначается, все общедоступные IP-пакеты с ответами направляются на этот шлюз вместо 1.2.3.1. Я могу решить эту проблему, вручную настроив исходную маршрутизацию, однако она не работает для открытых служб, поскольку они пересылаются с другого узла кластера и проходят NAT. Мне бы пришлось вручную настроить отслеживание соединений и разметку маршрутов... И я чувствую, что при таком подходе я бы "боролся" с к3с и фланелью. И для этого мне также нужно будет настроить какую-то автоматизацию....
Я стараюсь максимально упростить настройку и избегать как можно большего количества SPOF, однако не могу найти простого решения. Является ли мой вариант использования настолько специфичным?
Одной из идей было бы использовать VIP-адреса из диапазона 172.16.30.x и выполнить своего рода NAT на маршрутизаторе 1.2.3.x, однако я бы хотел избежать возни с основным маршрутизатором, поскольку он маршрутизирует гораздо более важные проекты, чем этот небольшой экспериментальный кластер :-)