Kubernetes: способ вручную направлять трафик к разным репликам

У меня есть контейнер (приложение для машинного обучения), который может загружать предварительно обученные ml-модели, хранящиеся в постоянном томе. Я могу попросить приложение загрузить конкретную модель, указав ее имя через REST API.

Теперь я хочу масштабировать это приложение так, чтобы я мог загружать любую модель в любую из реплик (не во всех из них) и иметь возможность анализировать данные из этой модели.

Я знаю, что это можно сделать, имея несколько развертываний и несколько служб, указывающих на каждое из этих развертываний, так что каждый экземпляр будет иметь отдельный порт узла, и я могу получить доступ к REST API каждого экземпляра через эти разные порты узла. Делая это, я могу вести учет того, какая модель загружена на какой экземпляр в моем собственном.

Есть ли какой-либо рекомендуемый способ выполнить это требование без множественных развертываний, а с помощью реплик? (Например, поддержание единого файла развертывания с репликами и ручной балансировщик нагрузки на уровне обслуживания)


person Dulanjaya Tennekoon    schedule 08.02.2021    source источник
comment
Вы спрашиваете, можете ли вы иметь одно развертывание с несколькими модулями и хотите вручную балансировать нагрузку трафика на эти модули?   -  person Mu-Majid    schedule 08.02.2021
comment
да. Необходимо вручную сбалансировать нагрузку трафика, поскольку модели, загруженные в разные экземпляры, различаются.   -  person Dulanjaya Tennekoon    schedule 08.02.2021
comment
Если у вас есть одна Служба, и вы отправили ей запрос, как бы она узнала, куда ее отправить? Возможно, вам придется построить этот слой маршрутизации самостоятельно.   -  person David Maze    schedule 08.02.2021


Ответы (1)


Как вы упомянули, предпочтительный способ добиться этого - использовать несколько развертываний и сервисов.

Если реплики не созданы вручную, они управляются развертыванием, и вы не сможете иметь одно развертывание с несколькими наборами реплик с разными версиями.

Вам определенно будет проще иметь одну службу + развертывание для каждой версии и один входящий вход для маршрутизации трафика на основе некоторой информации. Это может быть заголовок, поддомен, путь и т. Д.

Чтобы сгенерировать все свои развертывания и сервисы, вы можете взглянуть на kustomize.

person ITChap    schedule 08.02.2021