0Pricing
Kubernetes Basics · Урок

Обновления без остановки и откаты

Внедряйте обновления приложений без простоя и возвращайтесь к предыдущим версиям при возникновении проблем.

«Обновления без остановки и откаты» — бесплатный урок Kubernetes Basics на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kubernetes Basics, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kubernetes Basics содержит 4 уроков всего.

Обновления без простоя: зачем они нужны

Представьте, что Вы обновляете работающее приложение. Без тщательного планирования пользователи могут столкнуться с простоем или ошибками. Именно здесь в Kubernetes особенно полезны обновления методом постепенной замены!

Такие обновления позволяют перейти на новую версию приложения без прерывания обслуживания. Новая версия разворачивается постепенно, поэтому приложение остаётся доступным.

Как Deployments обрабатывают обновления

Когда Вы обновляете шаблон пода Deployment (например, изменяете образ контейнера), Kubernetes не просто завершает работу всех подов и запускает их заново. Вместо этого по умолчанию используется стратегия RollingUpdate.

  • Создаются новые поды с обновлённой конфигурацией.
  • Старые поды постепенно завершают работу после того, как новые становятся готовыми.
  • Этот процесс обеспечивает плавный переход с минимальным простоем или вовсе без него.

Управление скоростью обновления

Вы можете точно настроить поведение обновлений методом постепенной замены с помощью двух ключевых параметров в разделе .spec.strategy.rollingUpdate Deployment:

  • maxUnavailable: максимальное количество подов, которые могут быть недоступны во время обновления. Значение может быть абсолютным числом или процентом.
  • maxSurge: максимальное количество подов, которые могут быть созданы сверх желаемого количества. Значение также может быть абсолютным числом или процентом.

По умолчанию оба параметра имеют значение 25%.

Наше начальное развертывание

Начнём с простого развертывания Nginx. Этот YAML описывает исходное приложение, запущенное с 3 репликами nginx:1.14.2.

На следующем шаге мы используем его как основу для выполнения обновления методом постепенной замены.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Выполнение обновления методом постепенной замены

Теперь обновим версию Nginx с 1.14.2 до 1.15.0. Для этого достаточно изменить образ в YAML и применить файл.

Kubernetes обнаружит изменение и автоматически запустит обновление методом постепенной замены. Обратите внимание на поле image ниже:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.0
        ports:
        - containerPort: 80

Мониторинг состояния обновления

После применения обновлённого YAML Вы можете отслеживать ход обновления методом постепенной замены с помощью команды kubectl rollout status:

kubectl rollout status deployment/my-nginx

Вы увидите сообщения о создании новых и завершении работы старых подов, пока обновление не завершится. Также можно использовать kubectl get rs, чтобы увидеть старые и новые ReplicaSets.

Проверка истории обновлений

Kubernetes хранит историю редакций Ваших Deployments. Это очень полезно для понимания изменений и возможного отката.

Чтобы просмотреть историю, используйте команду:

kubectl rollout history deployment/my-nginx

Вы увидите список редакций, каждая из которых представляет отдельное состояние Deployment. Значение CHANGE-CAUSE часто отражает команду или изменение YAML.

Когда требуется откат

Даже при тщательном тестировании новая версия приложения иногда содержит ошибки или проблемы с производительностью, которые не удалось обнаружить. В таких критических ситуациях необходим быстрый способ вернуться к известному стабильному состоянию.

Здесь на помощь приходят откаты. Они позволяют отменить проблемное обновление и вернуть Deployment к предыдущей рабочей версии из его истории.

Выполнение отката

Чтобы откатиться к непосредственно предыдущей редакции, используйте:

kubectl rollout undo deployment/my-nginx

Если нужно откатиться к определённой редакции (например, к редакции 1), укажите её:

kubectl rollout undo deployment/my-nginx --to-revision=1

Kubernetes выполнит ещё одно обновление методом постепенной замены, чтобы вернуть поды к указанной конфигурации из истории.

Проверка стратегии обновления

Какие из следующих параметров можно использовать для управления поведением стратегии RollingUpdate Deployment в Kubernetes?

Итоги: плавные обновления и защита от ошибок

Мы рассмотрели, как Deployments в Kubernetes обеспечивают обновления без простоя методом постепенной замены, плавно переводя приложения на новые версии. Вы узнали:

  • По умолчанию Deployments используют RollingUpdate.
  • maxUnavailable и maxSurge управляют скоростью обновления.
  • kubectl rollout status отслеживает ход выполнения.
  • kubectl rollout history отслеживает редакции.
  • kubectl rollout undo позволяет быстро откатываться к стабильным версиям.

Эти возможности крайне важны для поддержания высокой доступности и надёжности приложений!

Часто задаваемые вопросы

Урок «Обновления без остановки и откаты» бесплатный?

Да — полный текст урока «Обновления без остановки и откаты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kubernetes Basics, подпишись на CoddyKit PRO. Курс Kubernetes Basics содержит 4 уроков всего.

Чему я научусь в уроке «Обновления без остановки и откаты»?

Внедряйте обновления приложений без простоя и возвращайтесь к предыдущим версиям при возникновении проблем. Ты практикуешь Kubernetes Basics с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kubernetes Basics?

Предыдущий опыт не требуется. Kubernetes Basics на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Обновления без остановки и откаты»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kubernetes Basics?

Да. Каждый урок Kubernetes Basics включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Разбор Deployments
  2. Масштабирование приложений с помощью ReplicaSets
  3. Обновления без остановки и откаты
  4. Стратегии развёртывания: Blue-Green и Canary
← Назад к Kubernetes Basics