Руководство прикладного разработчика#

Встречающиеся в руководстве термины и определения смотрите в одноименном разделе документа Руководство по установке.

Системные требования#

  1. Развернут и настроен кластер Kubernetes версии 1.21 и выше, в соответствии с требованиями, предъявляемыми к Платформе.

  2. В проекте создана учетная запись с правами на загрузку артефактов.

  3. Настроен доступ в Docker-репозиторий для публикации образов разрабатываемых приложений.

  4. Для доступа в 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 не выявлены.