Руководство прикладного разработчика#
Встречающиеся в руководстве термины и определения смотрите в одноименном разделе документа Руководство по установке.
Системные требования#
Развернут и настроен кластер Kubernetes версии 1.21 и выше, в соответствии с требованиями, предъявляемыми к Платформе.
В проекте создана учетная запись с правами на загрузку артефактов.
Настроен доступ в Docker-репозиторий для публикации образов разрабатываемых приложений.
Для доступа в Kubernetes c использованием консоли, на рабочем месте должен быть установлен клиент Kubernetes (kubectl).
Подключение и конфигурирование#
Подключение#
Подключение осуществляется администраторами прикладного проекта. Процесс описан в документе Руководство по системному администрированию.
Конфигурирование#
Миграция на текущую версию#
Для миграции на различные версии требуется провести установку. Процесс описан в документе Руководство по установке.
Быстрый старт#
Подключение данного программного компонента производится через ФПД оператор, где необходимо в поле spec.distrInfo.chartList[] указать путь до Helm Chart из дистрибутива и информацию об имени релиза
chartList:
- chartPath: /package/conf/helm/
releaseName: autoscaler
Использование программного продукта#
Программный компонент Autoscaler предназначен для управления автомасштабированием на основании различных пользовательских данных и контроля автомасштабирования на основании процента загруженности квоты namespace кластера OpenShift или Kubernetes, а также их производных.
В данном разделе будут представлены примеры использования компонента AUSC.
ScaleTemplate - Основной ресурс для управления автомасштабированием#
Кастомный ресурс ScaleTemplate определяет:
Цели автомасштабирования — ссылка на целевые ресурсы развертывания, то есть Deployment, StatefullSet или другой кастомный ресурс, отвечающий за развертывание сервисов, разрешенный администратором.
Параметры автомасштабирования — минимальное и максимальное количество реплик, интервал для проверки источников данных.
Источники данных для автомасштабирования — настройка параметров расчета количества реплик из источников данных.
Ниже приведен пример спецификации ресурса ScaleTemplate.
Описание ресурса#
apiVersion: autoscaler.synapse.sber/v1beta1
kind: ScaleTemplate
metadata:
name: myScaleTemplate
spec:
poolingInterval: 10
maxReplicas: 9
minReplicas: 4
targets:
- name: myApp
triggers:
- metadata:
cpu: '0.1'
memory: '0.1'
type: utilization
Название поля |
Описание |
Опциональность |
|---|---|---|
pollingInterval |
Интервал проверки каждого триггера в секундах |
Опциональный. По умолчанию: 30 |
minReplicas |
Минимальное количество, до которого Autoscaler будет масштабировать целевой ресурс |
Опциональный. По умолчанию: 1 |
maxReplicas |
Максимальное количество, до которого Autoscaler будет масштабировать целевой ресурс |
Опциональный. По умолчанию: 100 |
targets |
Описание целей автомасштабирования |
Обязательный |
triggers |
Описание источников данных для автомасштабирования приложений |
Обязательный |
Описание полей targets:
Название поля |
Описание |
Опциональность |
|---|---|---|
apiVersion |
Версия API целевого ресурса |
Опциональный. По умолчанию: apps/v1 |
kind |
Название целевого ресурса развертывания |
Опциональный. По умолчанию: Deployment |
name |
Название экземпляра ресурса развертывания |
Обязательный |
Описание полей triggers:
Название поля |
Описание |
Опциональность |
|---|---|---|
type |
Тип триггера |
Обязательный |
metadata |
Метаинформация триггера |
Обязательный |
Триггеры#
Ниже приведено описание источника данных для автомасштабирования (триггера).
utilization
Расчет реплик на основе метрик утилизации k8s из api утилизационных метрик кластера metrics.k8s.io:
type: utilization
metadata:
cpuUtilization: '0.4' # Значение утилизации CPU, при достижении которого начинается масштабирование
memoryUtilization: '0.6' # Значение утилизации ОЗУ, при достижении которого начинается масштабирование
HorizontalPodAutoscaler - Способ применения автомасштабирования#
На текущий момент для применения данных автомасштабирования на сервисы необходимо использовать ресурс HorizontalPodAutoscaler.
Пример ресурса приведен ниже.
kind: HorizontalPodAutoscaler
apiVersion: autoscaling/v2
metadata:
name: example
namespace: synai-victim
spec:
scaleTargetRef:
kind: Deployment
name: MyServer
apiVersion: apps/v1
minReplicas: 1
maxReplicas: 100
metrics:
- type: External
external:
metric:
name: synapse_autoscaler_scaler_replicas
selector:
matchLabels:
name: MyServer
target:
type: AverageValue
averageValue: '1'
behavior:
scaleDown:
stabilizationWindowSeconds: 30
В поле spec.scaleTargetRef описывается цель автомасштабирования:
scaleTargetRef:
kind: Deployment #kind ресурса цели
name: MyServer #название ресурса цели
apiVersion: apps/v1 #apiverion ресурса цели
Далее в поле spec.metrics.external.metric.selector описываются данные приложения:
matchLabels:
name: MyServer #Название приложения. Обязательно
gvk: apps/v1.Deployment #GroupVersonKind ресурса. Необязательно, по умолчанию apps/v1.Deployment
Внимание! На k8s версии 1.22 и ниже необходимо использовать ApiVersion: autoscaling/v2beta2.
ProjectCapacityPolicy - управление выделением квоты#
Для управления выделением квот на автомасштабирование приложений необходимо использовать ресурс ProjectCapacityPolicy.
apiVersion: autoscaler.synapse.sber/v1beta1
kind: ProjectCapacityPolicy
metadata:
name: example
spec:
quota:
- name: Memory
source: utilization
metadata:
resource: memory # Используется CPU или Memory,
limit: 10Gb # Пример лимита на Memory, измеряется в байтах
- name: CPU
source: utilization
metadata:
resource: cpu
limit: "10" # Пример лимита на CPU, измеряется в ядрах
usageLevels:
low:
CPU: '3'
Memory: '4Gb'
normal:
CPU: '6'
Memory: '6Gb'
high:
CPU: '10'
Memory: '10Gb'
Название поля |
Описание |
|---|---|
quota |
Список квот на определенные типы ресурсов. |
limit |
Лимит на определенную квоту |
name |
Наименование квоты |
resource |
Тип ресурса к которому применяется квота |
Описание полей targets:
Название поля |
Описание |
Опциональность |
|---|---|---|
apiVersion |
Версия API целевого ресурса |
Опциональный. По умолчанию: apps/v1 |
kind |
Название целевого ресурса развертывания |
Опциональный. По умолчанию: Deployment |
name |
Название экземпляра ресурса развертывания |
Обязательный |
Часто встречающиеся проблемы и пути их устранения#
В связи с исключением устаревших функций и добавлением новой функциональности проблемы на момент выпуска текущего релиза Autoscaler не выявлены.