У меня есть 10 реплик, на которых запущено одно и то же приложение Java. Я хотел бы пропустить отправку запроса на реплику, которая выполняет полный цикл сборки мусора / остановить мировой цикл (с использованием интерфейса инструмента jvm).
Пример: 5 приложений выполняют полный цикл сборки мусора, 5 завершили цикл ГХ. Следовательно, я хотел бы направить трафик на модули, которые завершили цикл сборки мусора.
псевдокод: 1) Балансировщик нагрузки получает входящий запрос REST для серверной службы. 2) Определите реплики, которые не находятся в полном цикле GC. 3) Используйте циклический перебор, чтобы направить запрос к одной из реплик, найденных на шаге 2.
Может ли кто-нибудь мне помочь, если мы сможем сделать это в кубернетах.

У меня есть для вас концепция, но вам нужно добавить что-то в свою программу. Посмотрите на readinessProbe.
readinessProbe: указывает, готов ли контейнер к обслуживанию запросов. Если проверка готовности завершается неудачно, контроллер конечных точек удаляет IP-адрес модуля из конечных точек всех служб, соответствующих этому модулю. Состояние готовности по умолчанию перед начальной задержкой - Failure. Если контейнер не предоставляет зонд готовности, состояние по умолчанию - Success.
Это пример конфигурации, вы также можете использовать TCP-сокет
readinessProbe:
httpGet:
path: /healthz
port: 8181
initialDelaySeconds: 5
periodSeconds: 5
Когда запускается сборщик мусора, вы перестаете отвечать по пути /healthz, а kubelet отмечает модуль как неработоспособный и ждете, пока он снова не станет здоровым, в вашем случае это произойдет, когда сборщик мусора будет завершен.