Skip to main content

Deployment

Deployments наиболее популярный способ для запуска приложений без сохранения состояния. Это добавляет проверку состояния, масштабирование, восстановление. 

Реализовано через deployment контроллер. Каждый контроллер управляет одним или несколькими одинаковыми подами.

k8s_deployments_1.JPG

Масштабирование (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описание шаблона (все аналогично описанию пода)

Примеры

 

Основные команды

КомандаДоп. пар.Описание