Используя HPA (Horizontal Pod Autoscaler) и Cluster Autoscaler на GKE, модули и узлы масштабируются, как и ожидалось. Однако, когда спрос уменьшается, модули удаляются из случайных узлов, кажется. Это вызывает меньше используемых узлов. Это не экономически эффективно ...
РЕДАКТИРОВАТЬ: HPA основан на единичных метриках targetCPUUtilizationPercentage. Не используется VPA.
Это сокращенный файл yaml для развертывания и HPA:
apiVersion: apps/v1
kind: Deployment
metadata:
name: foo
spec:
replicas: 1
templates:
spec:
containers:
- name: c1
resources:
requests:
cpu: 200m
memory: 1.2G
- name: C2
resources:
requests:
cpu: 10m
volumeMounts:
- name: log-share
mountPath: /mnt/log-share
- name: C3
resources:
requests:
cpu: 10m
limits:
cpu: 100m
- name: log-share
mountPath: /mnt/log-share
volumes:
- name: log-share
emptyDir: {}
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: foo
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: foo
minReplicas: 1
maxReplicas: 60
targetCPUUtilizationPercentage: 80
...
EDIT2: добавление тома emptyDir в качестве допустимого примера.
Как улучшить в этой ситуации?
Есть некоторые идеи, но ни одна из них не решает проблему полностью ...
- настроить тип компьютера пула узлов и запрос ресурсов модуля так, чтобы на него помещался только один модуль узел. Если модуль HPA удаляет модуль из узла, через некоторое время узел будет удален, но он не будет работать для развертываний различных запросов ресурсов.
- с использованием вытесняющих узлов, если это возможно ...