Настройка горизонтального автомасштабирования (HPA) для Milvus
Обзор
Horizontal Pod Autoscaling (HPA) - это функция Kubernetes, которая автоматически регулирует количество бодов в развертывании на основе использования ресурсов, таких как процессор или память. В Milvus HPA можно применить к компонентам без статических данных, таким как proxy, queryNode, dataNode и indexNode, чтобы динамически масштабировать кластер в ответ на изменения рабочей нагрузки.
В этом руководстве рассказывается о том, как настроить HPA для компонентов Milvus с помощью Milvus Operator.
Необходимые условия
- Работающий кластер Milvus, развернутый с помощью Milvus Operator.
- Доступ к сайту
kubectlдля управления ресурсами Kubernetes. - Знакомство с архитектурой Milvus и Kubernetes HPA.
Настройка HPA с помощью Milvus Operator
Чтобы включить HPA в кластере Milvus, управляемом Milvus Operator, выполните следующие действия:
Установите значение Replicas на -1:
В пользовательском ресурсе Milvus (CR) установите в поле
replicasзначение-1для компонента, который вы хотите масштабировать с помощью HPA. Это передаст управление масштабированием HPA, а не оператору. Вы можете редактировать CR напрямую или использовать следующую командуkubectl patchдля быстрого переключения на управление HPA:kubectl patch milvus <your-release-name> --type='json' -p='[{"op": "replace", "path": "/spec/components/proxy/replicas", "value": -1}]'Замените
<your-release-name>на имя вашего кластера Milvus.Чтобы убедиться, что изменения были применены, выполните команду:
kubectl get milvus <your-release-name> -o jsonpath='{.spec.components.proxy.replicas}'Ожидаемый результат должен быть
-1, подтверждающий, что компонентproxyтеперь находится под управлением HPA.Кроме того, вы можете определить его в CR YAML:
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: <your-release-name> spec: mode: cluster components: proxy: replicas: -1Define an HPA Resource:
Создайте ресурс HPA для целевого развертывания нужного компонента. Ниже приведен пример для компонента
proxy:apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: my-release-milvus-proxy-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-release-milvus-proxy minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 60 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 60 behavior: scaleUp: policies: - type: Pods value: 1 periodSeconds: 30 scaleDown: stabilizationWindowSeconds: 300 policies: - type: Pods value: 1 periodSeconds: 60Замените
my-releaseвmetadata.nameиspec.scaleTargetRef.nameна фактическое имя кластера Milvus (например,<your-release-name>-milvus-proxy-hpaи<your-release-name>-milvus-proxy).Примените конфигурацию HPA:
Разверните ресурс HPA с помощью следующей команды:
kubectl apply -f hpa.yamlЧтобы убедиться, что HPA успешно создан, выполните команду:
kubectl get hpaВы должны увидеть результаты, аналогичные следующим:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-release-milvus-proxy-hpa Deployment/my-release-milvus-proxy <some>/60% 2 10 2 <time>Поля
NAMEиREFERENCEбудут отражать имя вашего кластера (например,<your-release-name>-milvus-proxy-hpaиDeployment/<your-release-name>-milvus-proxy).
scaleTargetRef: Указывает развертывание для масштабирования (например,my-release-milvus-proxy).minReplicasиmaxReplicas: Задает диапазон масштабирования (в данном примере от 2 до 10 стручков).metrics: Настраивает масштабирование на основе использования процессора и памяти, ориентируясь на среднее использование 60 %.
Заключение
HPA позволяет Milvus эффективно адаптироваться к изменяющимся рабочим нагрузкам. Используя команду kubectl patch, вы можете быстро переключить компонент на управление HPA без ручного редактирования всего CR. Для получения более подробной информации обратитесь к документации Kubernetes HPA.