данный момент масштабирование вверх работает нормально, но вот уменьшение количества под не отрабатывает совсем. Подскажите, пожалуйста, в чем может быть причина?
Значения параметров пробовал разные, всё равно не отрабатывает как нужно. По метрикам масштабирование идёт по памяти, cpu не грузится более 10 процентов. Конфиг деплоймента:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: name
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: $CI_PROJECT_NAME
behavior:
scaleDown:
stabilizationWindowSeconds: 60
policies:
- type: Percent
value: 100
periodSeconds: 15
scaleUp:
stabilizationWindowSeconds: 10
policies:
- type: Pods
value: 1
periodSeconds: 15
selectPolicy: Max
minReplicas: 3
maxReplicas: 6
metrics:
- resource:
name: cpu
target:
type: Utilization
averageUtilization: 80
type: Resource
- resource:
name: memory
target:
type: Utilization
averageUtilization: 95
type: Resource
а приложения ваши очищают память после спада нагрузки?) Попробуйте по CPU только поскейлиться
Только CPU работает нормально. Память очищает, причём по метрикам потребление большое только на старте, происходит увеличение под, а затем потребление памяти уходит на уровень 80-85 процентов от реквеста и далее стабильно на этих значениях держит.
Дык а почему тогда считается что не работает?
для памяти указано среднее потребление в 95 процентов, как триггер масштабирования, но когда уровень опускается до 80-85, уменьшение количества под не происходит.
а ты посмотри в колонке TARGETS. Или в статусе спеки current показатели
к сожалению, не имею доступа к k8s непосредственно, метрики по кубу смотрю по workload борде в графане. и для приложения отдельно смотрю по подам значения для jvm. Порядки потребления примерно 130-150 мбайт потребляет jvm, пода целиком 180-200, реквест 256 выставлен.
там логика примерно такая. Если у тебя по нескольким метрикам автомасштабирование, он считает среднее для каждой из них. И масштабирование идет по той, которая больше определенного для нее target
merics api часто в качестве метрики для памяти берет container_memory_working_set_bytes, а не container_memory_usage_bytes. И OOMKiller по ней же приходит
эти таргеты ты можешь посмотреть в графане также, тебе нужны метрики из kube-state-metrics
Попробую запросить доступ к этим данным у коллег, Спасибо за советы!
а ты сделай тогда график/таблицу в grafana, который складывает container_memory_working_set_bytes и делит их на количество текущих реплик, и сравни с averageUtilization
Обсуждают сегодня