OpenShift - масштабирование приложений

Автомасштабирование - это функция OpenShift, при которой развернутые приложения могут масштабироваться и уменьшаться по мере необходимости в соответствии с определенными спецификациями. В приложении OpenShift автомасштабирование также известно как автомасштабирование пода. Есть дваtypes of application scaling следующим образом.

Вертикальное масштабирование

Вертикальное масштабирование - это все о добавлении все большей и большей мощности одной машине, что означает добавление большего количества ЦП и жесткого диска. Это старый метод OpenShift, который сейчас не поддерживается выпусками OpenShift.

Горизонтальное масштабирование

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

В OpenShift есть two methods to enable the scaling feature.

  • Использование файла конфигурации развертывания
  • При запуске образа

Использование файла конфигурации развертывания

В этом методе функция масштабирования включается через yaml-файл конфигурации развертывания. Для этого используется команда OC autoscale с минимальным и максимальным количеством реплик, которые должны выполняться в любой заданный момент времени в кластере. Нам нужно определение объекта для создания автомасштабирования. Ниже приведен пример файла определения автомасштабирования модуля.

apiVersion: extensions/v1beta1
kind: HorizontalPodAutoscaler
metadata:
   name: database
spec:
   scaleRef:
      kind: DeploymentConfig
      name: database
      apiVersion: v1
      subresource: scale
   minReplicas: 1
   maxReplicas: 10
   cpuUtilization:
      targetPercentage: 80

Когда у нас есть файл, нам нужно сохранить его в формате yaml и выполнить следующую команду для развертывания.

$ oc create –f <file name>.yaml

При запуске изображения

Можно также автомасштабировать без файла yaml, используя следующие oc autoscale команда в командной строке oc.

$ oc autoscale dc/database --min 1 --max 5 --cpu-percent = 75
deploymentconfig "database" autoscaled

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

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

Стратегия развертывания в OpenShift определяет поток развертывания с использованием различных доступных методов. В OpenShift следующиеimportant types of deployment strategies.

  • Скользящая стратегия
  • Воссоздать стратегию
  • Индивидуальная стратегия

Ниже приведен пример файла конфигурации развертывания, который используется в основном для развертывания на узлах OpenShift.

kind: "DeploymentConfig"
apiVersion: "v1"
metadata:
   name: "database"
spec:
   template:
      metadata:
         labels:
            name: "Database1"
spec:
   containers:
      - name: "vipinopenshifttest"
         image: "openshift/mongoDB"
         ports:
            - containerPort: 8080
               protocol: "TCP"
replicas: 5
selector:
   name: "database"
triggers:
- type: "ConfigChange"
- type: "ImageChange"
   imageChangeParams:
      automatic: true
      containerNames:
         - "vipinopenshifttest"
      from:
         kind: "ImageStreamTag"
         name: "mongoDB:latest"
   strategy:
      type: "Rolling"

В приведенном выше файле Deploymentconfig у нас есть стратегия Rolling.

Мы можем использовать следующую команду OC для развертывания.

$ oc deploy <deployment_config> --latest

Скользящая стратегия

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

strategy:
   type: Rolling
   rollingParams:
      timeoutSeconds: <time in seconds>
      maxSurge: "<definition in %>"
      maxUnavailable: "<Defintion in %>"
      pre: {}
      post: {}

Воссоздать стратегию

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

strategy:
   type: Recreate
   recreateParams:
      pre: {}
      mid: {}
      post: {}

Индивидуальная стратегия

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

strategy:
   type: Custom
   customParams:
      image: organization/mongoDB
      command: [ "ls -l", "$HOME" ]
      environment:
         - name: VipinOpenshiftteat
         value: Dev1