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 i seguenti 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.

Tradotto daDeepL

Prova Milvus gestito gratuitamente

Zilliz Cloud è senza problemi, basato su Milvus e 10 volte più veloce.

Inizia
Feedback

Questa pagina è stata utile?