Масштабирование KEDA по показателям ЦП

У меня есть приложение deployment.yaml с процессором и памятью, указанными как:

      resources:
        requests:
          memory: "10Gi"
          ephemeral-storage:  2Gi
          cpu: 50m
        limits:
          memory: "12Gi"
          ephemeral-storage:  5Gi
          cpu: 5

Масштабирование KEDA определяется следующим образом:

      apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: keda-scaler
  labels:
    app.kubernetes.io/name: app123
    infra.arc/repo.managed: kubernetes
spec:
  scaleTargetRef:
    name: app123
  cooldownPeriod: 60
  minReplicaCount: 2
  maxReplicaCount: 5
  advanced:
    restoreToOriginalReplicaCount: true
  fallback: # Fallback strategy when metrics are unavailable for the apps
    failureThreshold: 3 
    replicas: 2 #Keep this desired state when metrics are unavailable.
  triggers:
    - type: cpu 
      metadata:
        type: Utilization
        value: "80"

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

Согласно документам KEDA https://keda.sh/docs/2.7/scalers/cpu/

При использовании использования целевое значение — это среднее значение метрики ресурсов по всем соответствующим модулям, представленное в процентах от запрошенного значения ресурса для модулей. При использовании AverageValue целевое значение — это целевое значение среднего показателя по всем соответствующим модулям (количество).

Я не мог получить в этом случае, я установил значение как 80%, но все же его масштабирование слишком рано для максимального количества реплик.

Может ли кто-нибудь предложить, что является истинным значением значения и типа метрики в отношении ограничений процессора и памяти, которые мы указываем в файле deployment.yaml.

1 ответ

Значением из вашего примера является загрузка ЦП (1 ядро ​​ЦП = 1000 м). Например, это мой ScaledObject для ingres

      apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: ingress-cpu-scaller
  namespace: ingress-nginx
spec:
  scaleTargetRef:
    name: ingress-nginx-controller
    kind: Deployment
    apiVersion: apps/v1
  fallback: # Fallback strategy when metrics are unavailable for the apps
    failureThreshold: 4 # Optional. Default: 3 
    replicas: 5 # Keep this desired state when metrics are unavailable.
  minReplicaCount: 3                                 # Optional. Default: 0
  maxReplicaCount: 16                                # Optional. Default: 100 
  triggers:
  - type: cpu
    metricType: Utilization # Allowed types are 'Utilization' or 'AverageValue'
    metadata:
      value: "180" # If the CPU usage more than 180m, then KEDA will start a new replica

Важно: этот скаллер не работает, если развертывание не имеет ограничений и не запрашивает параметры.

Другие вопросы по тегам