данный момент масштабирование вверх работает нормально, но вот уменьшение количества под не отрабатывает совсем. Подскажите, пожалуйста, в чем может быть причина?
                  
                  
                  Значения параметров пробовал разные, всё равно не отрабатывает как нужно. По метрикам масштабирование идёт по памяти, 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
Обсуждают сегодня