Масштабирование 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
Важно: этот скаллер не работает, если развертывание не имеет ограничений и не запрашивает параметры.