Deployments
Содержание
Understanding DeploymentsCreating DeploymentsCreating a Deployment by using CLIPrerequisitesYAML file exampleCreating a Deployment via YAMLCreating a Deployment by using web consolePrerequisitesProcedure - Configure Basic InfoProcedure - Configure PodProcedure - Configure ContainersReference InformationHeath ChecksManaging DeploymentsManaging a Deployment by using CLIViewing a DeploymentUpdating a DeploymentScaling a DeploymentRolling Back a DeploymentDeleting a DeploymentManaging a Deployment by using web consoleViewing a DeploymentUpdating a DeploymentDeleting a DeploymentTroubleshooting by using CLICheck Deployment statusCheck ReplicaSet statusCheck Pod statusView LogsEnter Pod for debuggingCheck Health configurationCheck Resource LimitsUnderstanding Deployments
Обратитесь к официальной документации Kubernetes: Deployments
Deployment — это ресурс более высокого уровня в Kubernetes для управления и обновления реплик Pod'ов декларативным способом. Он предоставляет надежный и гибкий способ определения того, как должно работать ваше приложение, включая количество поддерживаемых реплик и безопасное выполнение rolling update.
Deployment — это объект в Kubernetes API, который управляет Pod'ами и ReplicaSet'ами. При создании 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.
Creating Deployments
Creating a Deployment by using CLI
Prerequisites
- Убедитесь, что
kubectlнастроен и подключен к вашему кластеру.
YAML file example
Creating a Deployment via YAML
Creating a Deployment by using web console
Prerequisites
Получите адрес образа. Источником образов могут быть репозитории образов, интегрированные администратором платформы через toolchain, либо сторонние репозитории образов.
-
В первом случае администратор обычно назначает репозиторий образов вашему проекту, и вы можете использовать образы из него. Если нужный репозиторий не найден, обратитесь к администратору для выделения.
-
Если это сторонний репозиторий, убедитесь, что образы можно напрямую вытягивать из него в текущем кластере.
-
Если для реестра образов требуется аутентификация, необходимо настроить соответствующий image pull secret. Подробнее см. Add ImagePullSecrets to ServiceAccount.
Procedure - Configure Basic Info
-
В Container Platform перейдите в Workloads > Deployments в левом меню.
-
Нажмите Create Deployment.
-
Выберите или введите образ и нажмите Confirm.
Примечание: При использовании образов из репозитория, интегрированного в веб-консоль, можно фильтровать образы по Already Integrated. Integration Project Name — например, образы (registry-projectname), где projectname — имя проекта в веб-консоли и имя проекта в репозитории образов.
-
В разделе Basic Info настройте декларативные параметры для Deployment:
Procedure - Configure Pod
Примечание: В кластерах с разной архитектурой, при развертывании образов для одной архитектуры, убедитесь в правильной настройке Node Affinity Rules для планирования Pod.
-
В разделе Pod настройте параметры контейнерного рантайма и управления жизненным циклом:
- Node Affinity Rules
- Network Configuration
-
Kube-OVN
-
Calico
-
Procedure - Configure Containers
-
В разделе Container настройте соответствующую информацию согласно следующим инструкциям.
-
Нажмите Add Container (вверху справа) ИЛИ Add Init Container.
См. Init Containers. Init Container:
- Запускается перед основными контейнерами приложения (последовательное выполнение).
- Освобождает ресурсы после завершения.
- Удаление разрешено, если:
- В Pod >1 контейнера приложения И ≥1 init контейнер.
- Не разрешено для Pod с одним контейнером приложения.
-
Нажмите Create.
Reference Information
Storage Volume Mounting instructions
Heath Checks
Managing Deployments
Managing a Deployment by using CLI
Viewing a Deployment
-
Проверьте, что Deployment создан.
-
Получите подробности о вашем Deployment.
Updating a 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'ы:
Scaling a Deployment
Вы можете масштабировать Deployment с помощью следующей команды:
Rolling Back a Deployment
-
Предположим, что при обновлении Deployment вы допустили опечатку в имени образа, указав
nginx:1.161вместоnginx:1.16.1: -
Развертывание застряло. Вы можете проверить это, посмотрев статус развертывания:
Deleting a Deployment
Удаление Deployment также удалит управляемый им ReplicaSet и все связанные Pod'ы.
Managing a Deployment by using web console
Viewing a Deployment
Вы можете просмотреть Deployment, чтобы получить информацию о вашем приложении.
- В Container Platform перейдите в Workloads > Deployments.
- Найдите нужный Deployment.
- Нажмите на имя Deployment, чтобы увидеть Details, Topology, Logs, Events, Monitoring и др.
Updating a Deployment
- В Container Platform перейдите в Workloads > Deployments.
- Найдите нужный Deployment.
- В выпадающем меню Actions выберите Update, чтобы открыть страницу редактирования Deployment.
Deleting a Deployment
- В Container Platform перейдите в Workloads > Deployments.
- Найдите нужный Deployment.
- В выпадающем меню Actions нажмите кнопку Delete в столбце операций и подтвердите удаление.
Troubleshooting by using CLI
Если у Deployment возникают проблемы, ниже приведены распространённые методы диагностики.
Check Deployment status
Check ReplicaSet status
Check Pod status
View Logs
Enter Pod for debugging
Check Health configuration
Убедитесь, что livenessProbe и readinessProbe настроены корректно, а эндпоинты проверки здоровья вашего приложения отвечают должным образом. Troubleshooting probe failures
Check Resource Limits
Убедитесь, что запросы и лимиты ресурсов контейнеров разумны и контейнеры не завершаются из-за нехватки ресурсов.
