0Pricing
Docker & DevOps Fundamentals · Урок

Развёртывания для приложений без состояния

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

«Развёртывания для приложений без состояния» — бесплатный урок Docker & DevOps Fundamentals на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Docker & DevOps Fundamentals, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Docker & DevOps Fundamentals содержит 4 уроков всего.

Знакомство с развёртываниями Kubernetes

Добро пожаловать к изучению основополагающей концепции Kubernetes: развёртываний! Это основной ресурс для управления приложениями без сохранения состояния.

Представьте развёртывание как чертёж приложения. Оно сообщает Kubernetes, сколько копий (реплик) приложения должно работать и как обновлять их без простоя.

Развёртывания для приложений без состояния — иллюстрация 1

За пределами подов и ReplicaSets

Вы узнали о подах (наименьшей единице) и ReplicaSets (обеспечивающих определённое количество подов).

Развёртывание работает поверх ReplicaSet. Оно предоставляет абстракцию более высокого уровня для:

  • создания и обновления ReplicaSets;
  • постепенного выпуска новых версий приложения;
  • возврата к предыдущим версиям, если что-то пошло не так.

Это значительно упрощает и делает безопаснее управление приложениями.

Внутри YAML-файла развёртывания

Как и другие ресурсы Kubernetes, развёртывания определяются с помощью YAML. Рассмотрим базовую структуру:

  • apiVersion: указывает версию API Kubernetes (например, apps/v1).
  • kind: для ресурса развёртывания всегда имеет значение Deployment.
  • metadata: содержит такие сведения, как name развёртывания и необязательные labels.

Эти поля помогают Kubernetes идентифицировать и упорядочивать развёртывания.

Указание реплик и шаблона

Основа развёртывания — его раздел spec. Здесь Вы определяете:

  • replicas: желаемое количество одинаковых подов приложения.
  • selector: способ, которым развёртывание находит управляемые им поды (с помощью меток).
  • template: по сути, определение пода, описывающее контейнеры, тома и другие параметры каждого пода.

Именно template развёртывание использует для создания новых подов.

Наше развёртывание Nginx

Вот простой манифест развёртывания веб-сервера Nginx. Он указывает Kubernetes поддерживать работу 3 подов Nginx.

Постарайтесь понять назначение каждой части!

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: 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

Создание развёртывания

Когда у Вас есть YAML-файл развёртывания (например, nginx-deployment.yaml), Вы можете создать развёртывание в кластере Kubernetes с помощью команды kubectl apply.

Затем Kubernetes обеспечит создание и поддержание желаемого количества подов.

kubectl apply -f nginx-deployment.yaml

Проверить его состояние можно с помощью команды:

kubectl get deployments

Масштабирование вверх и вниз

Вам нужно больше или меньше экземпляров приложения? Развёртывания упрощают масштабирование! Вы можете изменить поле replicas в YAML и повторно применить конфигурацию либо использовать прямую команду:

kubectl scale deployment nginx-deployment --replicas=5

Эта команда сразу укажет развёртыванию создать ещё 2 пода Nginx, увеличив общее количество до 5.

Обновления без простоя

Одно из главных преимуществ развёртываний — возможность выполнять постепенные обновления. При обновлении шаблона пода (например, при изменении версии образа) Kubernetes не отключает все старые поды одновременно.

Вместо этого он постепенно заменяет старые поды новыми, обеспечивая доступность приложения на протяжении всего процесса обновления.

kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1

Простое выполнение отката

Допустили ошибку при обновлении? Не беспокойтесь! Развёртывания сохраняют историю изменений, поэтому Вы можете легко вернуться к предыдущей стабильной версии.

Это называется откатом и служит важным механизмом защиты при развёртывании.

kubectl rollout undo deployment/nginx-deployment

Также можно просмотреть историю с помощью команды kubectl rollout history deployment/nginx-deployment.

Время проверить знания о развёртываниях

Разработчик обновляет развёртывание Nginx, заменяя образ nginx:1.14.2 на nginx:1.16.1. Какое основное преимущество даёт использование развёртывания Kubernetes для этого обновления?

Развёртывания: основные выводы

Отличная работа! Вы узнали о развёртываниях Kubernetes — мощном ресурсе для управления приложениями без сохранения состояния.

  • Развёртывания управляют ReplicaSets, которые, в свою очередь, управляют подами.
  • Они определяют желаемое состояние, включая количество replicas.
  • Ключевые возможности включают простое масштабирование, постепенные обновления без простоя и простой откат к предыдущим версиям.

Далее мы рассмотрим сервисы, которые обеспечивают доступ к Вашим приложениям!

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

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

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

Чему я научусь в уроке «Развёртывания для приложений без состояния»?

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

Нужен ли мне опыт, чтобы начать Docker & DevOps Fundamentals?

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

Сколько времени занимает урок «Развёртывания для приложений без состояния»?

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

Можно ли писать и запускать код в этом уроке Docker & DevOps Fundamentals?

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

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

  1. Развёртывания для приложений без состояния
  2. Сервисы для сетевого доступа
  3. ConfigMaps и секреты
  4. Ingress и внешняя маршрутизация
← Назад к Docker & DevOps Fundamentals