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