Рубрики
Uncategorized

Что такое развертывание в Kubernetes?

В моей последней статье Kubernetes я говорил о стручках, какова их цель, как мы можем их создавать и … Теги с кубиковыми, DevOps, новичками.

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

Эта статья перейдет в развертывание. В этом посте мы рассмотрим:

  • Какие развертывания в Kubernetes
  • Как мы можем создавать объекты развертывания в Kubernetes
  • Как мы можем использовать Kubectl для управления нашим развертыванием?
  • Стратегии развертывания

Давайте погрузимся в развертывание Kubernetes!

Какие развертывания в Kubernetes

Развертывания сообщает Kubernetes, как создавать и обновить экземпляры наших приложений. Они предоставляют слой функциональности вокруг стручков и позволяют описать желаемое состояние. Это абстракция высокого уровня, которая контролирует, как мы развертываем и поддерживаем набор стручков.

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

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

Эта диаграмма ниже объясняет взаимосвязь между развертываниями, копиями и стручками:

Как мы можем создавать объекты развертывания в Kubernetes

Мы можем определить наши объекты развертывания Kubernetes с использованием YAML. Давайте посмотрим на пример развертывания файла yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
  labels:
    tier: frontend
    app: nginx
spec:
  selector:
    matchLabels:
      app: myapp
  replicas: 3
  template:
      metadata:
      name: nginx
      labels:
        app: myapp
      spec:
      containers:
      - name: nginx
        image: nginx

Давайте разберем определение этого файла вниз! Чтобы создать объекты развертывания в Kubernetes с использованием YAML, нам нужны следующие поля.

Apiversion — Это определяет версию API Kubernetes, которую мы хотим использовать в нашем файле YAML. Для объектов развертывания мы используем приложения/v1 apiversion. добрый — Это определяет, какой объект Kubernetes мы хотим создать. Для развертываний мы используем развертывание добрых дел (достаточно просто, верно?) Метаданные — Это данные, которые помогают нам однозначно определить объект, который мы хотим создать. Здесь мы можем предоставить имя для нашего приложения, а также применить этикетки к нашему развертыванию. Spec — Это определяет состояние, которое мы хотим или наш объект.

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

Селектор — В нашем селекторе я использую Matchlabels атрибут. В развертываниях мы используем это в качестве селектора метки для стручков. По сути, стручки, которые управляются существующим репликатом, будут стручками, которые влияют на наше развертывание. Поэтому для того, чтобы этот объект развертывания применялся к этим стручкам, мы должны использовать метки шаблона POD в нашем определении развертывания. Шаблон — Это описывает стручки, которые будут созданы. Таким образом, в нашем файле мы создаем стручок, называемый MyApp, используя изображение Nginx для нашего контейнера. Replicas — В этом говорится количество желаемых стручков.

Как мы можем использовать Kubectl для управления нашим развертыванием?

Мы можем использовать Kubectl для выполнения различных операций на наших объектах развертывания Kubernetes. Давайте начнем с создания развертывания. Мы можем сделать это, используя следующую команду:

kubectl apply -f ourdeployment.yaml

Мы также можем создать развертывание, как так:

kubectl create -f ourdeployment.yaml

Чтобы увидеть, были ли наши развертывания созданы, мы можем запустить следующую команду:

kubectl get deployments

Используя наше развертывание, определенное выше, мы увидим что -то вроде этого:

NAME              READY     UP-TO-DATE   AVAILABLE   AGE
myapp-deployment  0/3       0            0           1s

Вот что означают следующие поля:

Имя — В этом столбце показаны имена развертывания в нашем пространстве имен Kubernetes. ГОТОВ — Это отображает, сколько реплики нашего приложения готовы для наших пользователей. На этом выходе 0 означает, что есть нулевые реплики, и 3 означает, что мы хотим, чтобы 3 реплики были готовы. ДО НАСТОЯЩЕГО ВРЕМЕНИ — Это показывает, сколько реплик было обновлено, чтобы достичь желаемого состояния. ИМЕЕТСЯ В НАЛИЧИИ — Это показывает, что многие реплики доступны для наших пользователей. Возраст — это показывает, как долго приложение работает.

Мы можем отслеживать статус нашего развертывания, выполнив следующую команду:

kubectl rollout status 

Мы можем увидеть историю развертывания, выполнив эту команду:

kubectl rollout history 

Мы также можем снять конкретное развертывание, выполнив эту команду:

kubectl rollout undo 

Чтобы масштабировать наши развертывания Kubernetes, мы можем запустить следующую команду:

kubectl scale  --replicas=10

Параметр -Replicas гласит, сколько реплик мы хотим масштабироваться. Таким образом, в этом примере мы бы масштабировали наше развертывание из 3 реплик, как определено в нашем файле YAML до 10 реплик. Мы также можем масштабировать наше развертывание вниз, если мы выберем.

Если в нашем кластере Kubernetes включено горизонтальное автомассалирование POD, мы можем определить, как минимальное и максимальное количество стручков, которые мы хотим запустить на основе использования ЦП. Так, например, мы могли бы запустить эту команду:

kubectl autoscale deployment --min=3 --max=10 --cpu-percent=70

Стратегии развертывания

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

Воссоздать — Это убьет все ваши существующие стручки, прежде чем создать новые стручки, которые вы определили в своем развертывании. Это вызовет время простоя применения! .

Rollingupdate — В этой стратегии будут развернуты обновления, а это означает, что стручки будут развернуты, а старые стручки будут убиты только в том случае, если будет работать новая версия ваших стручков. Мы можем определить, сколько стручков будет недоступно и сколько стручков будет создано как часть Rollingupdate. Этот тип стратегии развертывания является дефолтом в Kubernetes.

Вывод

Надеемся, что эта статья помогла вам понять основы развертывания в Kubernetes!

Если вы хотите узнать больше о развертываниях в Kubernetes, я использовал эти ресурсы, чтобы разобраться с ними, так что они тоже помогут вам!

Счастливого кодирования 💻👩 ‍💻👨‍💻

Оригинал: «https://dev.to/willvelida/what-are-deployments-in-kubernetes-59in»