Программная балансировка нагрузки в кубернетес - PullRequest
0 голосов
/ 19 октября 2018

У меня есть 10 реплик, работающих под тем же Java-приложением.Я хотел бы пропустить отправку запроса в реплику, которая выполняет полный цикл сбора мусора / остановить мировой цикл (используя интерфейс инструмента jvm).

ex: 5 приложение работает полный цикл GC, 5 выполнилиGC цикл.Поэтому я хотел бы направить трафик к модулям, которые завершили цикл GC.

псевдо-код: 1) Балансировщик нагрузки получает входящий REST-запрос для бэкэнд-службы.2) Определите реплики, которые не находятся в полном цикле GC.3) Используйте Round Robin, чтобы направить запрос к 1 из реплик, найденных на шаге 2.

Может ли кто-нибудь помочь мне, если мы сможем сделать это в kubernetes.

1 Ответ

0 голосов
/ 22 октября 2018

У меня есть концепция для вас, но вам нужно добавить какую-то часть в вашу программу.Посмотрите на readinessProbe.

readinessProbe: Указывает, готов ли Контейнер к запросам на обслуживание.В случае сбоя проверки готовности контроллер конечных точек удаляет IP-адрес модуля из конечных точек всех служб, соответствующих модулю.Состояние готовности по умолчанию до начальной задержки - Failure.Если контейнер не обеспечивает проверку готовности, состояние по умолчанию: Success.

. Это пример конфигурации, вы также можете использовать сокет TCP

readinessProbe:
  httpGet:
    path: /healthz
    port: 8181
  initialDelaySeconds: 5
  periodSeconds: 5

Когда GC запускаетсявы перестаете отвечать по пути /healthz, и kubelet помечает стручок как нездоровый и ждете, пока он снова не станет здоровым, в вашем случае это будет, когда GC завершит работу.

...