Configurare l'autoscaling orizzontale dei pod (HPA) per Milvus

Panoramica

Horizontal Pod Autoscaling (HPA) è una funzionalità di Kubernetes che regola automaticamente il numero di Pod in una distribuzione in base all'utilizzo delle risorse, come CPU o memoria. In Milvus, HPA può essere applicato a componenti stateless come proxy, queryNode, dataNode e indexNode per scalare dinamicamente il cluster in risposta alle variazioni del carico di lavoro.

Questa guida spiega come configurare HPA per i componenti Milvus utilizzando Milvus Operator.

Prerequisiti

  • Un cluster Milvus funzionante distribuito con Milvus Operator.
  • Accesso a kubectl per la gestione delle risorse Kubernetes.
  • Conoscenza dell'architettura Milvus e di Kubernetes HPA.

Configurazione di HPA con Milvus Operator

Per abilitare HPA in un cluster Milvus gestito da Milvus Operator, seguite questi passaggi:

  1. Impostare le repliche su -1:

    Nella risorsa personalizzata (CR) di Milvus, impostare il campo replicas su -1 per il componente che si desidera scalare con HPA. In questo modo si delega il controllo della scala a HPA invece che all'operatore. È possibile modificare direttamente il CR o utilizzare il seguente comando kubectl patch per passare rapidamente al controllo HPA:

    kubectl patch milvus <your-release-name> --type='json' -p='[{"op": "replace", "path": "/spec/components/proxy/replicas", "value": -1}]'
    

    Sostituite <your-release-name> con il nome del vostro cluster Milvus.

    Per verificare che la modifica sia stata applicata, eseguire il comando:

    kubectl get milvus <your-release-name> -o jsonpath='{.spec.components.proxy.replicas}'
    

    L'output atteso dovrebbe essere -1, a conferma che il componente proxy è ora sotto il controllo di HPA.

    In alternativa, è possibile definirlo nel CR YAML:

    apiVersion: milvus.io/v1beta1
    kind: Milvus
    metadata:
      name: <your-release-name>
    spec:
      mode: cluster
      components:
        proxy:
          replicas: -1
    
  2. Definire una risorsa HPA:

    Creare una risorsa HPA per indirizzare la distribuzione del componente desiderato. Di seguito è riportato un esempio per il 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
    

    Sostituire my-release in metadata.name e spec.scaleTargetRef.name con il nome effettivo del cluster Milvus (ad esempio, <your-release-name>-milvus-proxy-hpa e <your-release-name>-milvus-proxy).

  3. Applicare la configurazione HPA:

    Distribuire la risorsa HPA usando il seguente comando:

    kubectl apply -f hpa.yaml
    

    Per verificare che l'HPA sia stato creato correttamente, eseguire:

    kubectl get hpa
    

    Si dovrebbe vedere un output simile a:

    NAME                          REFERENCE                            TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
    my-release-milvus-proxy-hpa   Deployment/my-release-milvus-proxy   <some>/60%      2         10        2          <time>
    

    I campi NAME e REFERENCE rifletteranno il nome del cluster (ad esempio, <your-release-name>-milvus-proxy-hpa e Deployment/<your-release-name>-milvus-proxy).

  • scaleTargetRef: Specifica l'installazione da scalare (ad esempio, my-release-milvus-proxy).
  • minReplicas e maxReplicas: Imposta l'intervallo di scalatura (da 2 a 10 Pod in questo esempio).
  • metrics: Configura il ridimensionamento in base all'utilizzo della CPU e della memoria, mirando a un utilizzo medio del 60%.

Conclusione

HPA consente a Milvus di adattarsi in modo efficiente a carichi di lavoro variabili. Utilizzando il comando kubectl patch, è possibile passare rapidamente un componente al controllo HPA senza modificare manualmente l'intero CR. Per maggiori dettagli, consultare la documentazione di Kubernetes HPA.

Try Managed Milvus for Free

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

Get Started
Feedback

Questa pagina è stata utile?