Deployments
Содержание
Понимание DeploymentsСоздание DeploymentsСоздание Deployment с помощью CLIПредварительные требованияПример YAML файлаСоздание Deployment через YAMLСоздание Deployment через веб-консольПредварительные требованияПроцедура — Настройка базовой информацииПроцедура — Настройка PodПроцедура — Настройка контейнеровСправочная информацияПроверки здоровьяУправление DeploymentsУправление Deployment с помощью CLIПросмотр DeploymentОбновление DeploymentМасштабирование DeploymentОткат DeploymentУдаление DeploymentУправление Deployment через веб-консольПросмотр DeploymentОбновление DeploymentУдаление DeploymentУстранение неполадок с помощью CLIПроверка статуса DeploymentПроверка статуса ReplicaSetПроверка статуса PodПросмотр логовВход в Pod для отладкиПроверка конфигурации HealthПроверка лимитов ресурсовПонимание Deployments
Обратитесь к официальной документации Kubernetes: Deployments
Deployment — это ресурс высокого уровня в Kubernetes, используемый для декларативного управления и обновления реплик Pod для ваших приложений. Он предоставляет надежный и гибкий способ определить, как должно работать ваше приложение, включая количество поддерживаемых реплик и безопасное выполнение rolling update.
Deployment — это объект в API Kubernetes, который управляет Pods и ReplicaSets. При создании Deployment Kubernetes автоматически создает ReplicaSet, который отвечает за поддержание указанного количества реплик Pod.
Используя Deployments, вы можете:
- Декларативное управление: определить желаемое состояние вашего приложения, и Kubernetes автоматически обеспечит соответствие фактического состояния кластера желаемому.
- Контроль версий и откат: отслеживать каждую ревизию Deployment и легко откатываться к предыдущей стабильной версии в случае проблем.
- Обновления без простоя: постепенно обновлять приложение с помощью стратегии rolling update без прерывания сервиса.
- Самовосстановление: Deployment автоматически заменяет экземпляры Pod, если они аварийно завершаются, удаляются или теряются на узле, обеспечивая постоянное наличие указанного количества Pod.
Как это работает:
- Вы определяете желаемое состояние приложения через Deployment (например, какой образ использовать, сколько реплик запускать).
- Deployment создает ReplicaSet для обеспечения указанного количества запущенных Pod.
- ReplicaSet создает и управляет фактическими экземплярами Pod.
- При обновлении Deployment (например, смена версии образа) создается новый ReplicaSet, который постепенно заменяет старые Pod новыми согласно стратегии rolling update, пока все новые Pod не будут запущены, после чего удаляется старый ReplicaSet.
Создание Deployments
Создание Deployment с помощью CLI
Предварительные требования
- Убедитесь, что
kubectlнастроен и подключен к вашему кластеру.
Пример YAML файла
Создание Deployment через YAML
Создание Deployment через веб-консоль
Предварительные требования
Получите адрес образа. Источником образов могут быть репозитории образов, интегрированные администратором платформы через toolchain, либо сторонние репозитории образов.
- В первом случае администратор обычно назначает репозиторий образов вашему проекту, и вы можете использовать образы из него. Если нужный репозиторий образов не найден, обратитесь к администратору для выделения.
- Если это сторонний репозиторий образов, убедитесь, что образы можно напрямую подтягивать из него в текущем кластере.
- Если для реестра образов требуется аутентификация, необходимо настроить соответствующий image pull secret. Подробнее см. Add ImagePullSecrets to ServiceAccount.
Процедура — Настройка базовой информации
- В Container Platform перейдите в Workloads > Deployments в левой боковой панели.
- Нажмите Create Deployment.
- Выберите или введите образ и нажмите Confirm.
Примечание: При использовании образов из репозитория, интегрированного в веб-консоль, можно фильтровать образы по Already Integrated. Integration Project Name — например, образы (registry-projectname), где projectname — имя проекта в веб-консоли и имя проекта в репозитории образов.
-
В разделе Basic Info настройте декларативные параметры для workloads Deployment:
Процедура — Настройка Pod
Примечание: В кластерах с разной архитектурой, при развертывании образов одной архитектуры, убедитесь в правильной настройке Node Affinity Rules для планирования Pod.
-
В разделе Pod настройте параметры контейнерного рантайма и управления жизненным циклом:
- Node Affinity Rules
- Настройка сети
-
Kube-OVN
-
Calico
-
Процедура — Настройка контейнеров
-
В разделе Container настройте соответствующую информацию согласно следующим инструкциям.
-
Нажмите Add Container (вверху справа) ИЛИ Add Init Container.
См. Init Containers. Init Container:
- Запускается перед контейнерами приложения (последовательное выполнение).
- Освобождает ресурсы после завершения.
- Удаление разрешено, если:
- Pod содержит >1 контейнера приложения И ≥1 init контейнер.
- Не разрешено для pod с одним контейнером приложения.
-
Нажмите Create.
Справочная информация
Инструкции по монтированию томов
Проверки здоровья
Управление Deployments
Управление Deployment с помощью CLI
Просмотр Deployment
-
Проверьте, что Deployment создан.
-
Получите подробности о вашем Deployment.
Обновление Deployment
Выполните следующие шаги для обновления Deployment:
-
Обновим Pod nginx, чтобы использовать образ nginx:1 .16.1.
или используйте команду:
Также можно отредактировать Deployment и изменить
.spec.template.spec.containers[0].imageсnginx:1.14.2наnginx:1.16.1: -
Чтобы увидеть статус развертывания, выполните:
Выполните
kubectl get rs, чтобы увидеть, что Deployment обновил Pod, создав новый ReplicaSet и масштабировав его до 3 реплик, а также уменьшил старый ReplicaSet до 0 реплик.Выполнение
kubectl get podsтеперь должно показать только новые Pod:
Масштабирование Deployment
Вы можете масштабировать Deployment с помощью следующей команды:
Откат Deployment
-
Предположим, вы допустили опечатку при обновлении Deployment, указав имя образа как
nginx:1.161вместоnginx:1.16.1: -
Развертывание застряло. Вы можете проверить это, посмотрев статус развертывания:
Удаление Deployment
Удаление Deployment также удалит управляемый им ReplicaSet и все связанные Pod.
Управление Deployment через веб-консоль
Просмотр Deployment
Вы можете просмотреть Deployment, чтобы получить информацию о вашем приложении.
- В Container Platform перейдите в Workloads > Deployments.
- Найдите нужный Deployment.
- Нажмите на имя Deployment для просмотра Details, Topology, Logs, Events, Monitoring и др.
Обновление Deployment
- В Container Platform перейдите в Workloads > Deployments.
- Найдите нужный Deployment.
- В выпадающем меню Actions выберите Update для перехода на страницу редактирования Deployment.
Удаление Deployment
- В Container Platform перейдите в Workloads > Deployments.
- Найдите нужный Deployment.
- В выпадающем меню Actions нажмите кнопку Delete в колонке операций и подтвердите удаление.
Устранение неполадок с помощью CLI
Если у Deployment возникают проблемы, вот несколько распространенных методов диагностики.
Проверка статуса Deployment
Проверка статуса ReplicaSet
Проверка статуса Pod
Просмотр логов
Вход в Pod для отладки
Проверка конфигурации Health
Убедитесь, что livenessProbe и readinessProbe настроены корректно, а конечные точки проверки здоровья вашего приложения отвечают правильно. Устранение неполадок с probe
Проверка лимитов ресурсов
Убедитесь, что запросы и лимиты ресурсов контейнеров разумны и контейнеры не завершаются из-за нехватки ресурсов.
