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 à
kubectlpour 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 :
Définir les répliques sur -1:
Dans la ressource personnalisée (CR) Milvus, définissez le champ
replicassur-1pour 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 commandekubectl patchsuivante 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 composantproxyest 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: -1Define 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: 60Remplacez
my-releasedansmetadata.nameetspec.scaleTargetRef.namepar votre nom de cluster Milvus actuel (par exemple,<your-release-name>-milvus-proxy-hpaet<your-release-name>-milvus-proxy).Appliquer la configuration HPA:
Déployer la ressource HPA à l'aide de la commande suivante :
kubectl apply -f hpa.yamlPour vérifier que l'HPA a été créé avec succès, exécuter :
kubectl get hpaVous 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
NAMEetREFERENCEreflètent le nom de votre cluster (par exemple,<your-release-name>-milvus-proxy-hpaetDeployment/<your-release-name>-milvus-proxy).
scaleTargetRef: Spécifie le déploiement à mettre à l'échelle (par exemple,my-release-milvus-proxy).minReplicasetmaxReplicas: 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.