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 kubectl para 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:

  1. Establezca Replicas en -1:

    En el recurso personalizado Milvus (CR), establezca el campo replicas a -1 para 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 comando kubectl patch para 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 componente proxy está 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: -1
    
  2. Definir 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: 60
    

    Sustituya my-release en metadata.name y spec.scaleTargetRef.name por el nombre real de su cluster Milvus (por ejemplo, <your-release-name>-milvus-proxy-hpa y <your-release-name>-milvus-proxy).

  3. Aplique la configuración HPA:

    Despliegue el recurso HPA utilizando el siguiente comando:

    kubectl apply -f hpa.yaml
    

    Para verificar que el HPA se ha creado con éxito, ejecute:

    kubectl get hpa
    

    Deberí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 NAME y REFERENCE reflejarán el nombre de su clúster (por ejemplo, <your-release-name>-milvus-proxy-hpa y Deployment/<your-release-name>-milvus-proxy).

  • scaleTargetRef: Especifica el despliegue a escalar (por ejemplo, my-release-milvus-proxy).
  • minReplicas y maxReplicas: 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.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

¿Fue útil esta página?