9 - Deployment в Kubernetes. Стратегии обновления приложений
Summary
TLDRВ этом видео подробно рассматривается объект Deployment в Kubernetes. Обсуждаются его преимущества и использование для развертывания приложений с помощью декларативного подхода. Автор демонстрирует создание и управление Deployment с помощью команды `kubectl`, объясняя взаимодействие с объектами ReplicaSet и Pod. Приводится пример изменения конфигурации и обновления приложения без простоев, а также откат к предыдущей версии. Видео акцентирует внимание на стратегиях обновления Rolling Update и Recreate, и на важности хранения ревизий для корректного управления откатами версий.
Takeaways
- 📦 Deployment - это объект высокого уровня в Kubernetes, предназначенный для декларативного развертывания и обновления приложений.
- 🔄 ReplicaSet автоматически создается при создании объекта Deployment, но напрямую его создавать не нужно.
- 👾 Deployment управляет Pods и обновляет их без простоя (downtime) благодаря стратегии Rolling Update.
- ⚙️ Стратегия обновления Recreate предполагает удаление всех старых Pods перед созданием новых.
- 📝 Deployment поддерживает историю ревизий, позволяя откатываться на предыдущие версии приложения.
- 🔍 Hash-код и селекторы меток помогают различать и управлять Pod'ами, принадлежащими одному ReplicaSet.
- 🌐 Для взаимодействия с Pod'ами используется объект Kubernetes Service, который регистрирует Pods с определенными метками.
- 🚀 Для обновления приложения необходимо изменить секцию шаблона (template) в Deployment и задать новую версию контейнера.
- 💡 Использование команд kubectl позволяет управлять объектами Kubernetes, обновлять Pods и отслеживать изменения в кластере.
- ❗️ При обновлении Deployment создаются новые Pods, а старые удаляются поочередно, обеспечивая непрерывность работы приложения.
Q & A
Что такое объект deployment в Kubernetes и для чего он используется?
-Deployment — это объект более высокого уровня в Kubernetes, предназначенный для развертывания и обновления приложений декларативным образом. Он позволяет создавать и управлять репликами контейнеров через реплика-сет, поддерживая их актуальное состояние.
Почему deployment использует реплика-сет и как это происходит?
-Когда создается объект deployment, автоматически создается и реплика-сет, который управляет контейнерами, поддерживая их количество и статус. Это позволяет отделить логику развертывания от управления репликами, что делает процесс более гибким и удобным для обновлений.
Как создать deployment с помощью команды kubectl?
-Для создания deployment используется команда `kubectl create deployment <имя_deployment> --image=<образ>`. Например, `kubectl create deployment myapp --image=myapp:v1` создаст deployment с именем myapp, используя образ myapp:v1.
Как работает обновление deployment и какие есть стратегии обновления?
-Deployment в Kubernetes поддерживает две стратегии обновления: rolling update и recreate. Rolling update обновляет поды поочередно, минимизируя downtime, тогда как стратегия recreate сначала удаляет все поды, а затем создаёт новые, что может привести к временному отсутствию доступа к приложению.
Какие параметры важны для rolling update?
-Для настройки rolling update важны параметры `maxSurge` и `maxUnavailable`. `maxSurge` указывает максимальное количество дополнительных подов, которые могут быть запущены во время обновления, а `maxUnavailable` — максимальное количество подов, которые могут быть недоступны.
Что такое rollback и как его выполнить?
-Rollback — это откат deployment к предыдущей версии. Для выполнения rollback используется команда `kubectl rollout undo deployment <имя_deployment>`. Также можно указать конкретную ревизию для отката, например, `kubectl rollout undo deployment <имя_deployment> --to-revision=<ревизия>`.
Почему важно сохранять предыдущие версии реплика-сетов?
-Kubernetes использует предыдущие реплика-сеты для выполнения откатов (rollback) к предыдущим версиям deployment. Если удалить старые реплика-сеты, будет невозможно вернуться к их состоянию, и откат к прошлым версиям deployment станет недоступен.
Как работает масштабирование (scaling) deployment?
-Масштабирование deployment выполняется с помощью команды `kubectl scale deployment <имя_deployment> --replicas=<количество>`. Kubernetes автоматически обновит количество подов, соответствующее новому значению, создавая или удаляя поды через реплика-сет.
Для чего нужен сервис Kubernetes, и как он работает с deployment?
-Сервис Kubernetes создает стабильный IP-адрес для набора подов и обеспечивает балансировку нагрузки между ними. Он использует селекторы для регистрации всех подов, соответствующих критериям. Это позволяет доступ к приложению через один адрес, несмотря на количество подов и их изменения.
Что делает команда `kubectl apply -f` и в чем ее преимущество?
-Команда `kubectl apply -f <файл.yaml>` применяет конфигурацию из YAML файла к кластеру. Преимущество заключается в возможности декларативного управления объектами Kubernetes, что позволяет хранить конфигурацию в репозиториях и отслеживать изменения для удобного управления версиями.
Outlines
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowMindmap
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowKeywords
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowHighlights
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowTranscripts
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowBrowse More Related Video
10 - Service в Kubernetes - Часть 1. Type: ClusterIP. Endpoints
7 - Метки, аннотации и пространства имён в Kubernetes
The Best Way to Manage Tasks and Projects in Notion
Протестировал видеокарты nvidia 3090, 4090, A100 в задаче инференса нейросети Llama 70b.
КАК выучить ЛЮБОЙ ЯЗЫК БЕЗ РЕПЕТИТОРА
Обновленный Selenium и работа с прокси | Python, Selenium и proxy | Подмена IP адреса
5.0 / 5 (0 votes)