Стратегии основанные на функциях Deployment Config

Стратегии, основанные на функциях Deployment Config, влияют на все маршруты приложения:

Стратегия развертывания Rolling

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

Стратегия Rolling проверяет готовность новых подов приложения с помощью функции readiness check прежде, чем сокращать поды старой версии приложения.

Использовать стратегию Rolling рекомендовано если:

  • необходимо избежать простоев во время обновления приложения;

  • приложения поддерживает одновременный запуск старой и новой версии кода.

Параметры стратегии Rolling:

strategy:
 type: Rolling
 rollingParams:
   updatePeriodSeconds: 1
   intervalSeconds: 1
   timeoutSeconds: 120
   maxSurge: "20%"
   maxUnavailable: "10%"
   pre: {}
   post: {}
  1. updatePeriodSeconds: 1 — время ожидания между обновлениями пода. Если время не указано, по умолчанию устанавливается значение равное 1 секунде.

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

  3. timeoutSeconds: 600 — время ожидания масштабирования. По умолчанию устанавливается значение равное 600 секунд. В случае если по истечении данного срока процесс масштабирования не закончен ― произойдет автоматическое восстановление предыдущей завершенной версии развертывания.

  4. maxSurge: "20%" — максимальное количество подов, которое может быть запланировано сверх исходного количества подов. Параметр может быть установлен как в процентах, например, 20%, так и в абсолютном значении, например, = 2. По умолчанию для данного параметра устанавливается значение равное 25%.

  5. maxUnavailable: "10%" — максимальное количество подов, которое может быть недоступно во время обновления приложения. Параметр может быть установлен как в процентах, например, 10%, так и в абсолютном значении, например, = 2. По умолчанию для данного параметра устанавливается значение равное 25%.

  6. pre: {} и post— хуки жизненного цикла.

Запуск стратегии Rolling

Запустить Rolling стратегию можно с помощью CLI. Для этого:

  1. Создайте приложение на базе образов развертывания. Образы развертывания доступны на DockerHub:

    oc new-app openshift/deployment-example
    
  2. Если в приложении используется маршрутизатор, то сделайте приложение доступным по маршруту:

    oc expose svc/deployment-example
    
  3. Проведите масштабирование Deployment Config до трех реплик:

    oc scale dc / creation-example --replicas = 3
    
  4. Запустите новое развертывание автоматически, установив тег latest:

    oc tag deployment-example:v2 deployment-example:latest
    
  5. При использовании CLI следующая команда показывает, сколько подов в версии 1 (старая версия приложения) и сколько в версии 2 (новая версия приложения):

    oc describe dc deployment-example
    

См.также

Подробнее о стратегии Rolling здесь.

Стратегия развертывания Recreate

Применение стратегии Recreate позволяет удалить поды устаревшей версии приложения и запустить поды новой версии.

Параметры стратегии Recreate:

strategy:
type: Recreate
recreateParams:
  pre: {}
  mid: {}
  post: {}

Где параметры pre: {}, mid: {}, post: {} — lifecycle hooks (хуки жизненного цикла).

Процесс стратегии развертывания Recreate:

  1. Выполняется хуки жизненного цикла Pre.

  2. Останавливается существующие развертывание.

  3. Выполняется хуки жизненного цикла Mid.

  4. Масштабируется новая версия развертывания.

  5. Выполняется хуки жизненного цикла Post.

Примечание

Если число реплик развертывания в процессе масштабирования превышает единицу, первая реплика развертывания будет проверена на готовность до масштабирования развертывания. Если проверка первой реплики не удалась, развертывание не будет осуществлено.

Использовать стратегию Recreate рекомендовано если:

  • необходимо выполнить миграцию данных или другие преобразования перед запуском новой версии кода;

  • если приложение не поддерживает одновременную работу старой и новой версий кода;

  • если необходимо использовать RVO, которые не поддерживается для совместного использования несколькими репликами.

Внимание

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

См.также

Подробнее о стратегии Recreate здесь.