Я масштабирую прогноз ML на основе использования процессора и памяти. Я использовал HPA для масштабирования на уровне pod, где мы указали показатели как процессора, так и памяти. При создании развертывания я также указал запрашиваемые вычислительные ресурсы и ограничения для одного и того же (я вставил конфигурацию HPA и конфигурацию шаблона pod для справки)
Я заметил, что хотя мы указали лимит ресурсов и запрос, когда я проверяю память и ЦП, потребляемые каждым модулем, он показывает, что только один модуль потребляет все ресурсы ЦП и памяти, а другие потребляют очень меньше вычислительных ресурсов. Насколько я понимаю, все модули должны потреблять примерно равные ресурсы, поэтому мы можем сказать, что они масштабируются, иначе это все равно, что запускать код без k8s на одной машине.
Примечание. Я использую клиент python k8s для создания развертывания и служб, а не yaml.
Я пытался настроить параметры с ограничениями и ресурсами и заметил, что из-за этого ML-конвейер в некоторый момент экспоненциально увеличивает потребление памяти и процессора.
Моя конфигурация HPA: -
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
namespace: default
name: #hpa_name
spec:
scaleTargetRef:
apiVersion: apps/v1beta1
kind: Deployment
name: #deployment_name
minReplicas: 1
maxReplicas: 40
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 80
- type: Resource
resource:
name: memory
targetAverageValue: 5Gi
Код шаблона моего пакета-
container = client.V1Container(
ports=[client.V1ContainerPort(container_port=8080)],
env=[client.V1EnvVar(name="ABC", value=12345)],
resources=client.V1ResourceRequirements(
limits={"cpu": "2", "memory": "22Gi"},
requests={"cpu": "1", "memory": "8Gi"},
),
Выход kubectl top pods
NAME CPU(cores) MEMORY(bytes)
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-77c6ds 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7d5n4l 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7dq6c9 14236m 16721Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7f6nmh 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7fzdc4 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7gvqtj 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7h6ld7 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7j7gv4 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7kxlvh 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7nnn8x 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7pmtnj 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7qflkh 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7s26cj 1m 176Mi
deploy-24b32e5dc388456f8f2263be39ffb5f7-de19236511504877-7st5lt 1m 176Mi
Исходя из вышеприведенного вывода, очень ясно, что третий модуль использует большинство ресурсов, в то время как другие находятся при постоянном потреблении памяти и ЦП, что очень мало.
Я ожидаю, что каждый модуль должен использовать ресурсы, приблизительно равные на основе ограничений и ресурсов, указанных в запросах шаблона модуля. В этом случае оно должно составлять от 1 до 2 ЦП для потребления ЦП и от 8 Ги до 22 Ги для памяти / меньше, чем запрашиваемый ресурс, но не выходит за определенные пределы.
Заранее спасибо за любые пункты / помощь / подсказки.