Я постараюсь описать нужные вам объекты просто словами.
Вам не нужно создавать балансировщик нагрузки для каждого сервиса.Когда вы используете входной контроллер (например, nginx), сам входной контроллер будет балансировщиком нагрузки типа.Все остальные ваши сервисы должны быть чем-то типа ClusterIP.
После этого вы можете решить, как связать ваши сервисы ClusterIP с Nginx LoadBalancer: создать вход для каждого сервиса или один вход, который предоставляет каждый сервис на основе некоторого правила(например, пути, как @harsh-manvar показывает в посте выше).
Когда вы говорите «этого не происходит», было бы хорошо, если бы вы могли предоставить подробную информацию о вашей настройке.
ВДля того чтобы входной контроллер Nginx работал, его необходимо определить как тип службы NodePort или LoadBalancer.Примеры, представленные в документации по nginx, используют LoadBalancer.Однако LoadBalancer работает только тогда, когда ваш кластер поддерживает этот объект (это означает, что он работает в большинстве облачных провайдеров, таких как AWS / GCP / Azure / DigitalOcean или в более новых версиях minikube).С другой стороны, NodePort предоставит входной контроллер на узле Kubernetes, где он работает (при использовании minikube это обычно означает своего рода виртуальную машину, которая затем должна быть перенаправлена на порт, чтобы быть доступной).
Для использованиявойти в локальную среду, вы можете заглянуть в миникубе.Все, что вам нужно, это запустить minikube addons enable ingress
, и он развернет для вас контроллер nginx.После этого все, что вам нужно сделать, это определить вход, и в зависимости от ваших настроек вам может понадобиться использовать kubectl port-forward
для переноса прямого порта 80 на модуле контроллера nginx на локальный порт вашей машины.