Kubernetes Camel Spring изящно закрыли - PullRequest
0 голосов
/ 31 октября 2018

У меня есть приложение верблюжьей загрузки, которое обрабатывает сообщения на activeMq. однако время от времени готовый зонд выходит из строя и перезапускает модуль. Теперь все в порядке, но затем я постоянно получаю сообщения о входе в систему приложений Inflight и он входит в цикл перезапуска из-за постоянного сбоя готового зонда.

Возможно ли, чтобы kubernets позволил приложению spring / camel корректно завершить работу или потреблять какие-либо сообщения в очереди?

1 Ответ

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

Используя Контейнерные крючки , вы можете настроить prestop, который может выглядеть следующим образом:

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      preStop:
        exec:
          command: ["/usr/sbin/nginx","-s","quit"]

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

Вы можете следить за потоком на Завершение стручков

  1. Пользователь отправляет команду на удаление Pod с льготным периодом по умолчанию (30 с)
  2. Стручок на сервере API обновляется временем, после которого Стручок считается «мертвым», а также льготным периодом.
  3. Pod отображается как «Завершающий», когда перечислен в клиентских командах
  4. (одновременно с 3) Когда Kubelet видит, что Pod был отмечен как завершающий, потому что время в 2 было установлено, он начинает процесс отключения pod.
    1. Если модуль определил preStop hook , он вызывается внутри модуля. Если хук preStop все еще работает после истечения льготного периода, то шаг 2 вызывается с небольшим (2 секунды) продленным льготным периодом.
    2. Процессам в Pod отправляется сигнал TERM.
  5. (одновременно с 3) Pod удаляется из списка конечных точек для службы и больше не считается частью набора запущенных модулей для контроллеров репликации. Блоки, которые медленно отключаются, не могут продолжать обслуживать трафик, поскольку балансировщики нагрузки (например, прокси-сервер службы) удаляют их из своих вращений.
  6. Когда льготный период истекает, любые процессы, все еще работающие в модуле, уничтожаются SIGKILL.
  7. Kubelet завершит удаление Pod на сервере API, установив льготный период 0 (немедленное удаление). Модуль исчезает из API и больше не виден клиенту.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...