Google kubernetes pods выключение и запуск - PullRequest
0 голосов
/ 30 января 2020

Мы используем Google kubernetes для развертывания наших микросервисов, окружения для интеграции развертывания, мы определяем наши файлы k8s внутри репозиториев githup.

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

Можем ли мы сказать kubernetes как-нибудь ждать, пока новые модули будут полностью загружены, или, по крайней мере, подождать 10 секунд, прежде чем отключить старые стручки.

1 Ответ

2 голосов
/ 01 февраля 2020

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

Чтобы решить эту проблему, вам необходимо настроить правильный readinessProbe или readinessGates на модулях так, чтобы статус модуля становился готовым только тогда, когда он фактически готов Если вы не уверены, что указать в качестве зонда, вы также можете определить initialDelaySeconds с помощью предположения, сколько времени, по вашему мнению, нужно для запуска модуля.

Вам также следует изучить использование развертывания. c поле для minReadySeconds, а также определение правильной стратегии развертывания . Вы можете убедиться, что обновляемое обновление создает новые модули (определив поле maxSurge) и убедиться, что старый модуль не удаляется до тех пор, пока новый модуль не будет готов и не получит трафик c (используя поле maxUnavailable = 0).

Примером может быть:

spec:
  replicas: 3
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

Это позволит поддерживать 3 рабочие реплики в любой момент времени. Когда новая версия нажата, 1 новый модуль будет создан с новым изображением. Ни один модуль не будет переведен в автономный режим, пока новый не будет в состоянии готовности. Как только это произойдет, один из старых модулей будет завершен, и цикл возобновится. Не стесняйтесь изменить значение maxSurge на большее, если вы хотите, чтобы развертывание произошло за один go.

...