9 - Deployment в Kubernetes. Стратегии обновления приложений

BAKAVETS
10 Mar 202114:15

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

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This

5.0 / 5 (0 votes)

Related Tags
KubernetesDeploymentРепликаСетМиникубКоманды CLIОбновление приложенийХэш репликDocker образыСетевые сервисыПлавное обновление
Do you need a summary in English?