Deployment
Deployments наиболее популярный способ для запуска приложений без сохранения состояния. Это добавляет проверку состояния, масштабирование, восстановление.
Реализовано через deployment контроллер. Каждый контроллер управляет одним или несколькими одинаковыми подами.
Масштабирование (Scalling)
Существуют несколько типов
Тип | Описание |
Horizontal Pod Autoscaler | Масштабирование количества подов, наиболее часто используется. |
Vertical Pod Autoscaler | Масштабирование ресурсов, потребляемых подами. Не установлен по умолчанию. Редко используется |
Cluster Autoscaler | Добавляет/удаляет ноды. По умолчанию, часто используется. |
Например, указываем кол-во подов от 2 до 10. Нагрузка повысилась, и HPA запрашивает еще 2 пода. Они запускаются. Но нагрузка растет, и запрашивается еще 2 пода. Однако на существующем кластере нет возможности запустить еще 2 пода, и они переходят в статус Pending. CA определяет Pending поды и увеличивает количество нодов, запуская там поды. И наоборот.
Масштабирование связано с понятием текущего состояния (state). Есть необходимое состояние и наблюдаемое состояние. При неравенстве контроллер запускает процесс изменений.
Важно: архитектура приложения должна поддерживать возможность масштабирования. Микросервисы должны взаимодействовать только через API. При увеличении количества, добавляется новый под.
ReplicaSets - набор подов с одной версией конфигурации. При обновлении yaml создается вторая ReplicaSet и один новый под. Из старой ReplicaSet удаляется один под. И так далее до полного обновления. Но конфигурация сохраняется. Можно вернуть к старым настройкам.
Структура YAML файла
Верхний уровень
Параметр | Описание |
kind | Тип, в данном случае Deployments |
spec | Спецификация |
spec
Параметр | Описание |
strategy | Стратегия восстановления |
replicas | кол-во реплик |
selector | правила выбора меток |
template | описание шаблона (все аналогично описанию пода) |
Примеры
Основные команды
Команда | Доп. пар. | Описание |