0Pricing
DevOps Bootcamp · Урок

Разбор Deployments

Узнайте, как Deployments автоматизируют управление Pods и ReplicaSets для приложений без состояния.

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

Что такое Deployment?

Добро пожаловать! В Kubernetes управление приложениями означает управление их Pod. Но непосредственное управление отдельными Pod или даже ReplicaSet может быть сложным.

Deployment — это объект более высокого уровня, упрощающий управление приложениями без сохранения состояния. Представьте его как менеджера Вашего приложения.

  • Он определяет желаемое состояние приложения.
  • Он обеспечивает сохранение этого состояния, даже если Pod завершаются с ошибкой.
  • Он автоматизирует обновления и откаты.

Зачем использовать Deployment?

Deployment дают значительные преимущества для надёжного запуска приложений в Kubernetes:

  • Автоматическое управление: они обрабатывают создание, масштабирование и удаление Pod.
  • Самовосстановление: если Pod аварийно завершает работу, Deployment автоматически заменяет его, поддерживая нужное количество реплик.
  • Декларативные обновления: Вы описываете желаемое новое состояние, а Deployment определяет, как его достичь (например, выполняя поэтапный выпуск новых версий).

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

Основная роль Deployment

В основе своей Deployment управляет объектами ReplicaSets. Задача ReplicaSet — постоянно обеспечивать работу указанного количества реплик Pod.

Таким образом, Deployment использует ReplicaSet для достижения своей цели: обеспечить правильное количество работоспособных Pod в соответствии с Вашим определением.

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

Структура YAML Deployment

Как и большинство объектов Kubernetes, Deployment определяются с помощью YAML. Ниже приведены основные разделы, которые обычно встречаются в таком описании:

  • apiVersion и kind: определяют тип объекта (Deployment).
  • metadata: имя, метки и другие сведения о самом Deployment.
  • spec: основное определение, включающее:
    • replicas: желаемое количество Pod.
    • selector: способ, которым Deployment находит управляемые им Pod.
    • template: шаблон создаваемых Pod.

Шаблон Pod

Поле template внутри spec Deployment чрезвычайно важно. По сути, это полное определение Pod.

Все Pod, созданные этим Deployment, будут использовать данный шаблон. Это означает, что Вы определяете:

  • образы контейнеров, которые нужно использовать;
  • порты, которые нужно открыть;
  • переменные окружения;
  • запросы и ограничения ресурсов;
  • и многое другое!

Изменения этого шаблона запускают обновления приложения.

Создание простого Deployment

Определим Deployment для простого веб-сервера Nginx. Нам нужны 3 реплики.

Обратите внимание: selector.matchLabels должен соответствовать template.metadata.labels. Это сообщает Deployment, какими Pod он управляет.

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

Применение Deployment

Чтобы создать этот Deployment в кластере Kubernetes (например, Minikube), используется команда kubectl apply. Сохраните приведённый выше YAML как nginx-deployment.yaml.

kubectl создаст объект Deployment. Затем контроллер Deployment обнаружит этот объект и начнёт действовать: создаст ReplicaSet, который затем создаст 3 Pod Nginx.

kubectl apply -f nginx-deployment.yaml

Проверка Deployment

После применения можно проверить состояние Deployment и управляемых им Pod:

  • kubectl get deployments: показывает Deployment.
  • kubectl get replicasets: показывает ReplicaSet, созданный Deployment.
  • kubectl get pods -l app=nginx: показывает Pod, которыми управляет Deployment (с помощью его селектора меток).
  • kubectl describe deployment my-nginx-deployment: предоставляет подробную информацию о Deployment, включая события.
kubectl get deployments
kubectl get pods -l app=nginx
kubectl describe deployment my-nginx-deployment

Поддержание желаемого состояния

Одна из самых мощных возможностей Deployment — способность поддерживать желаемое состояние. Если Вы указали replicas: 3, Deployment обеспечит постоянную работу 3 Pod.

Попробуйте вручную удалить один из Pod Nginx (kubectl delete pod <pod-name>). Вы увидите, как Deployment быстро создаст новый Pod взамен удалённого! Это самовосстановление в действии.

Быстрая проверка

Для управления каким типом приложений в основном используется Deployment?

Итоги: понимание Deployment

Отличная работа! Вы сделали первые шаги в работе с Deployment Kubernetes.

  • Deployment — это объекты высокого уровня для управления приложениями без сохранения состояния.
  • Они автоматизируют создание, масштабирование и самовосстановление Pod, управляя ReplicaSet.
  • Вы определяете Deployment с помощью манифеста YAML, указывая желаемое количество replicas и template для Pod.
  • kubectl apply создаёт Deployment, а kubectl get/describe помогают отслеживать его состояние.

Далее мы подробнее рассмотрим ReplicaSet и узнаем, как они гарантируют желаемое количество Pod!

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

Урок «Разбор Deployments» бесплатный?

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

Чему я научусь в уроке «Разбор Deployments»?

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

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

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

Сколько времени занимает урок «Разбор Deployments»?

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

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

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

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

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