Приложения для балансировки нагрузки в Kubernetes Bare-Metal

Я смотрел на настройку контроллера Ingress для кластера Kubernetes из чистого металла. Я начал смотреть на контроллеры Ingress, но, похоже, они хорошо работают только для HTTP-сервисов, которые доступны через порт 80 или 443. Если вам нужно предоставить сервис TCP или UDP на произвольном порту, кажется, что это возможно сделать с Nginx или HAProxy Ingress контроллеры, но ваш кластер в конечном итоге совместно использует один диапазон портов. Пожалуйста, дайте мне знать, если я неправильно понял это.

Если вам нужно выставить и распределить нагрузку служб TCP или UDP на произвольных портах, как бы вы это сделали? Я думал об использовании ClientIP, чтобы сервисы получали свои собственные VIP и могли использовать любые порты, которые они хотят, но возникает вопрос: как вы перенаправите трафик на эти VIP и дадите им дружественные DNS-имена? Есть ли решение для этого уже, или вы должны построить его самостоятельно? Использование NodePort или любого решения, которое означает, что пространства имен должны совместно использовать один диапазон портов, на самом деле не является масштабируемым или нежелательным. Особенно, если Бобу в пространстве имен 1 абсолютно необходимо, чтобы его служба была доступна через порт 8000, но Линда в пространстве имен 2 уже использует этот порт.

Будем весьма благодарны за любые разъяснения, возможные решения или помощь в целом.

1 ответ

Проблема с github интересна, и есть несколько хитрых обходных путей, таких как запуск с HTTPS и затем использование ALPN для переключения на собственный протокол: https://github.com/kubernetes/kubernetes/issues/23291 но, конечно, тогда ваши клиенты нуждаются знать, как это сделать.

Но если протоколы для этих служб TCP и UDP, использующих один и тот же порт, различаются и не имеют возможности для взаимодействия, тогда входному контроллеру необходимо иметь возможность назначать эквивалент отдельного маршрутизируемого IP-адреса - либо у поставщика облачных услуг. или с проприетарной инфраструктурой, как бы то ни было, для каждой предоставляемой услуги.

Я не присматривался, хотя я чувствую, что упакованные входные контроллеры от nginx и haproxy не будут иметь такой автоматизации. Он должен был быть построен в координации с имеющейся инфраструктурой автоматизации.

Другие вопросы по тегам