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 для отладкиПроверка конфигурации здоровьяПроверка лимитов ресурсовПонимание 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, либо репозитории образов сторонних платформ.
- В первом случае администратор обычно назначает репозиторий образов вашему проекту, и вы можете использовать образы из него. Если нужный репозиторий образов не найден, обратитесь к администратору для выделения.
- Если это репозиторий образов сторонней платформы, убедитесь, что образы можно напрямую загрузить из него в текущем кластере.
Процедура — Настройка базовой информации
- В Container Platform перейдите в Workloads > Deployments в левой боковой панели.
- Нажмите Create Deployment.
- Выберите или введите образ и нажмите Confirm.
Примечание: При использовании образов из репозитория, интегрированного в веб-консоль, можно фильтровать образы по Already Integrated. Integration Project Name, например, образы (docker-registry-projectname), включают имя проекта projectname в этой веб-консоли и имя проекта containers в репозитории образов.
-
В разделе 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:
-
Обновим Pods nginx, чтобы использовать образ nginx:1 .16.1.
или используйте следующую команду:
Также можно отредактировать Deployment и изменить
.spec.template.spec.containers[0].imageсnginx:1.14.2наnginx:1.16.1: -
Для просмотра статуса развертывания выполните:
Выполните
kubectl get rs, чтобы увидеть, что Deployment обновил Pods, создав новый ReplicaSet и масштабируя его до 3 реплик, а старый ReplicaSet масштабируется до 0 реплик.Выполнение
kubectl get podsтеперь должно показывать только новые Pods:
Масштабирование Deployment
Вы можете масштабировать Deployment с помощью следующей команды:
Откат Deployment
-
Предположим, что вы ошиблись при обновлении Deployment, указав имя образа как
nginx:1.161вместоnginx:1.16.1: -
Развертывание застряло. Вы можете проверить это, посмотрев статус развертывания:
Удаление Deployment
Удаление Deployment также удалит управляемый им ReplicaSet и все связанные Pods.
Управление 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 для отладки
Проверка конфигурации здоровья
Убедитесь, что livenessProbe и readinessProbe настроены корректно, а конечные точки проверки здоровья вашего приложения отвечают правильно. Устранение неполадок с проверками
Проверка лимитов ресурсов
Убедитесь, что запросы и лимиты ресурсов контейнеров разумны и контейнеры не завершаются из-за нехватки ресурсов.
