Балансировщики нагрузки GKE с одним ip-адресом перекрывают порты

# #kubernetes #google-cloud-platform #google-kubernetes-engine #load-balancing #kubernetes-service

Вопрос:

У меня есть тестовый кластер в GKE с несколькими приложениями. Некоторые из них должны быть доступны на одном ip-адресе и в качестве услуги type: LoadBalancer .

Я зарезервировал статический внешний адрес и использовал его в yamls своих сервисов как loadBalancerIP . Но все в порядке, кроме одной услуги. Это ftp — сервер с портами 20-21 и 30000-30005 для пассивного режима. GKE автоматически настраивает балансировщики нагрузки для служб с диапазоном портов от самого низкого до самого большого для каждой службы. Таким образом, очевидно, что он перекрывает любую другую службу моего кластера с диапазоном портов 20-30005 , и этот внешний ip-адрес службы находится в состоянии ожидания.

Есть ли какое-либо решение этой проблемы? Мои мысли приводят меня к использованию externalIPs поля с созданным вручную балансировщиком нагрузки с правилами пересылки и целями в консоли сетевых служб gcp. Или оба loadbalancerIP и externalIPs с одним и тем же ip-адресом, но я в этом не уверен. Правильно ли это будет работать? Есть ли другие решения?

Комментарии:

1. Здравствуйте, правильно ли я понимаю, что у вас есть X количество Service типа LoadBalancer , куда вы поместили это имя loadBalancerIP ?

2. Привет, @DawidKruk . Да, это верно 🙂 Я просто исследую k8s. Это плохая практика? Я предполагаю, что подобные ситуации редко или почти никогда не должны возникать на производстве.

3. Я бы предпочел избегать создания настроек, в которых вы назначаете один IP-адрес множеству Service типов LoadBalancer GKE ввода . Также вы думали об использовании другого решения для FTP? FTP небезопасен, поэтому ваши учетные данные будут переданы через Интернет в виде обычного текста. Чтобы решить эту проблему, вы можете переключиться на sFTP/SCP или некоторые управляемые решения на стороне GCP, если хотите уменьшить административные издержки.

Ответ №1:

Перепробовав почти все, я только что понял, что с таким поведением реализации GKE LB я на самом деле могу создать две службы, первую для диапазона портов активного режима, вторую для пассивного. С переключателем на приложение ftps. Звучит не идеально, но это единственное правильно работающее решение, которое я нашел до сих пор.