Configurer la mise à l'échelle horizontale des pods (HPA) pour Milvus

Vue d'ensemble

Horizontal Pod Autoscaling (HPA) est une fonctionnalité de Kubernetes qui ajuste automatiquement le nombre de Pods dans un déploiement en fonction de l'utilisation des ressources, telles que le CPU ou la mémoire. Dans Milvus, HPA peut être appliqué à des composants sans état comme proxy, queryNode, dataNode, et indexNode pour mettre à l'échelle dynamiquement le cluster en réponse aux changements de charge de travail.

Ce guide explique comment configurer le HPA pour les composants Milvus à l'aide de l'opérateur Milvus.

Conditions préalables

  • Un cluster Milvus en cours d'exécution déployé avec Milvus Operator.
  • Accès à kubectl pour gérer les ressources Kubernetes.
  • Connaissance de l'architecture Milvus et de l'HPA Kubernetes.

Configurer HPA avec Milvus Operator

Pour activer l'HPA dans un cluster Milvus géré par Milvus Operator, procédez comme suit :

  1. Définir les répliques sur -1:

    Dans la ressource personnalisée (CR) Milvus, définissez le champ replicas sur -1 pour le composant que vous voulez mettre à l'échelle avec HPA. Cela permet de déléguer le contrôle de la mise à l'échelle à l'APH plutôt qu'à l'opérateur. Vous pouvez modifier la CR directement ou utiliser la commande kubectl patch suivante pour passer rapidement au contrôle HPA :

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

    Remplacez <your-release-name> par le nom de votre cluster Milvus.

    Pour vérifier que la modification a été appliquée, exécutez la commande :

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

    La sortie attendue devrait être -1, confirmant que le composant proxy est désormais sous le contrôle de l'APH.

    Vous pouvez également le définir dans le CR YAML :

    apiVersion: milvus.io/v1beta1
    kind: Milvus
    metadata:
      name: <your-release-name>
    spec:
      mode: cluster
      components:
        proxy:
          replicas: -1
    
  2. Define an HPA Resource (Définir une ressource HPA) :

    Créez une ressource HPA pour cibler le déploiement du composant souhaité. Voici un exemple pour le composant 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
    

    Remplacez my-release dans metadata.name et spec.scaleTargetRef.name par votre nom de cluster Milvus actuel (par exemple, <your-release-name>-milvus-proxy-hpa et <your-release-name>-milvus-proxy).

  3. Appliquer la configuration HPA:

    Déployer la ressource HPA à l'aide de la commande suivante :

    kubectl apply -f hpa.yaml
    

    Pour vérifier que l'HPA a été créé avec succès, exécuter :

    kubectl get hpa
    

    Vous devriez obtenir un résultat similaire à celui-ci :

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

    Les champs NAME et REFERENCE reflètent le nom de votre cluster (par exemple, <your-release-name>-milvus-proxy-hpa et Deployment/<your-release-name>-milvus-proxy).

  • scaleTargetRef: Spécifie le déploiement à mettre à l'échelle (par exemple, my-release-milvus-proxy).
  • minReplicas et maxReplicas: Définit la plage de mise à l'échelle (2 à 10 Pods dans cet exemple).
  • metrics: Configure la mise à l'échelle en fonction de l'utilisation du processeur et de la mémoire, en visant une utilisation moyenne de 60 %.

Conclusion

HPA permet à Milvus de s'adapter efficacement à des charges de travail variables. En utilisant la commande kubectl patch, vous pouvez rapidement basculer un composant vers le contrôle HPA sans modifier manuellement le CR complet. Pour plus de détails, consultez la documentation HPA de Kubernetes.

Try Managed Milvus for Free

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

Get Started
Feedback

Cette page a-t - elle été utile ?