Configurar Autoescalado Horizontal de Pods (HPA) para Milvus
Visión general
Horizontal Pod Autoscaling (HPA) es una característica de Kubernetes que ajusta automáticamente el número de Pods en un despliegue basado en la utilización de recursos, como CPU o memoria. En Milvus, HPA puede aplicarse a componentes sin estado como proxy, queryNode, dataNode, y indexNode para escalar dinámicamente el clúster en respuesta a cambios en la carga de trabajo.
Esta guía explica como configurar HPA para componentes Milvus utilizando el Operador Milvus.
Prerrequisitos
- Un cluster Milvus en ejecución desplegado con Milvus Operator.
- Acceso a
kubectlpara gestionar recursos Kubernetes. - Familiaridad con la arquitectura Milvus y Kubernetes HPA.
Configurar HPA con Milvus Operator
Para habilitar HPA en un cluster Milvus administrado por Milvus Operator, siga estos pasos:
Establezca Replicas en -1:
En el recurso personalizado Milvus (CR), establezca el campo
replicasa-1para el componente que desea escalar con HPA. Esto delega el control de escalado a HPA en lugar del operador. Puede editar el CR directamente o utilizar el siguiente comandokubectl patchpara cambiar rápidamente al control HPA:kubectl patch milvus <your-release-name> --type='json' -p='[{"op": "replace", "path": "/spec/components/proxy/replicas", "value": -1}]'Reemplace
<your-release-name>con el nombre de su cluster Milvus.Para verificar que el cambio se ha aplicado, ejecute:
kubectl get milvus <your-release-name> -o jsonpath='{.spec.components.proxy.replicas}'La salida esperada debería ser
-1, confirmando que el componenteproxyestá ahora bajo control HPA.Alternativamente, puede definirlo en el CR YAML:
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: <your-release-name> spec: mode: cluster components: proxy: replicas: -1Definir un recurso HPA:
Cree un recurso HPA para dirigir el despliegue del componente deseado. A continuación se muestra un ejemplo para el componente
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: 60Sustituya
my-releaseenmetadata.nameyspec.scaleTargetRef.namepor el nombre real de su cluster Milvus (por ejemplo,<your-release-name>-milvus-proxy-hpay<your-release-name>-milvus-proxy).Aplique la configuración HPA:
Despliegue el recurso HPA utilizando el siguiente comando:
kubectl apply -f hpa.yamlPara verificar que el HPA se ha creado con éxito, ejecute:
kubectl get hpaDebería ver una salida similar a:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-release-milvus-proxy-hpa Deployment/my-release-milvus-proxy <some>/60% 2 10 2 <time>Los campos
NAMEyREFERENCEreflejarán el nombre de su clúster (por ejemplo,<your-release-name>-milvus-proxy-hpayDeployment/<your-release-name>-milvus-proxy).
scaleTargetRef: Especifica el despliegue a escalar (por ejemplo,my-release-milvus-proxy).minReplicasymaxReplicas: Establece el rango de escalado (de 2 a 10 Pods en este ejemplo).metrics: Configura el escalado basado en la utilización de CPU y memoria, con un objetivo de utilización media del 60%.
Conclusión
HPA permite a Milvus adaptarse eficientemente a cargas de trabajo variables. Utilizando el comando kubectl patch, puede cambiar rápidamente un componente a control HPA sin editar manualmente el CR completo. Para más detalles, consulte la documentación de Kubernetes HPA.