Exécuter Milvus dans Kubernetes avec Helm
Cette page explique comment démarrer une instance Milvus dans Kubernetes à l'aide des charts Helm Milvus.
Présentation
Helm utilise un format de packaging appelé « charts ». Un chart est un ensemble de fichiers décrivant un ensemble de ressources Kubernetes associées. Milvus fournit un ensemble de charts pour vous aider à déployer ses dépendances et ses composants.
Prérequis
Installez une StorageClass. Vous pouvez vérifier la StorageClass installée comme suit.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseVérifiez la configuration matérielle et logicielle requise avant l’installation.
Avant d’installer Milvus, il est recommandé d’utiliser l’outil de dimensionnement Milvus pour estimer la configuration matérielle requise en fonction du volume de vos données. Cela permet de garantir des performances optimales et une allocation optimale des ressources pour votre installation Milvus.
Si vous rencontrez des difficultés pour récupérer l’image, contactez-nous à l’adresse community@zilliz.com en précisant les détails du problème, et nous vous fournirons l’assistance nécessaire.
Installer le Helm Chart Milvus
Avant d’installer les Helm Charts Milvus, vous devez ajouter le référentiel Helm de Milvus.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
Le référentiel des Helm Charts de Milvus à l’adresse https://github.com/milvus-io/milvus-helm a été archivé. Nous utilisons désormais le nouveau référentiel à l’adresse https://github.com/zilliztech/milvus-helm. Le référentiel archivé est toujours disponible pour les charts jusqu’à la version 4.0.31, mais utilisez le nouveau référentiel pour les versions ultérieures.
Récupérez ensuite les Helm Charts Milvus depuis le dépôt comme suit :
$ helm repo update
Vous pouvez à tout moment exécuter cette commande pour récupérer les derniers charts Helm de Milvus.
Installation en ligne
1. Déployer un cluster Milvus
Une fois le chart Helm installé, vous pouvez démarrer Milvus sur Kubernetes. Cette section vous guide tout au long du déploiement d’un cluster Milvus.
Vous préférez un déploiement autonome ?
Si vous préférez déployer Milvus en mode autonome (un seul nœud) à des fins de développement ou de test, utilisez cette commande :
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.1 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true
Remarque: le mode autonome utilise Woodpecker comme file d’attente de messages par défaut et active le composant Streaming Node. Les déploiements autonomes exécutent Woodpecker intégré au pod Milvus ; le service Woodpecker dédié (pods séparés) est utilisé uniquement pour les déploiements distribués/en cluster. Pour plus de détails, consultez la Présentation de l’architecture et la section Woodpecker.
Déployer un cluster Milvus :
Pour le mode de service Woodpecker, nous vous recommandons d’utiliser la prochaine version Milvus 3.0.1 ou une version ultérieure avec Woodpecker v0.1.37 ou une version plus récente afin de bénéficier des optimisations en matière de nettoyage par compaction et de validation groupée.
La commande suivante déploie un cluster Milvus avec des paramètres optimisés pour la version 3.0.1, en utilisant Woodpecker comme file d’attente de messages recommandée :
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.1 \
--set woodpecker.enabled=true \
--set woodpecker.image.tag=v0.1.37 \
--set streaming.enabled=true \
--set streaming.woodpecker.embedded=false \
--set indexNode.enabled=false
Fonctionnalité de cette commande :
- Utilise Woodpecker comme file d’attente de messages (recommandé pour réduire la maintenance)
- Exécute Woodpecker en tant que service dédié (un StatefulSet distinct), et non intégré au nœud de streaming
- Active le nouveau composant « Streaming Node » pour améliorer les performances
- Désactive l'ancien nœud d'indexation (cette fonctionnalité est désormais gérée par le nœud de données)
Changements d'architecture dans Milvus 2.6.x :
- File d’attente de messages: Woodpecker est désormais recommandé (réduit la maintenance de l’infrastructure par rapport à Pulsar)
- Nouveau composant: le nœud de streaming est introduit et activé par défaut
- Composants fusionnés: le nœud d'index et le nœud de données sont combinés en un seul nœud de données
Pour plus de détails sur l'architecture, consultez la présentation de l'architecture.
Files d’attente de messages alternatives : pour effectuer un déploiement avec Pulsar, Kafka ou RocksMQ à la place de Woodpecker, consultez la section « Dépendances facultatives ».
Étapes suivantes : La commande ci-dessus déploie Milvus avec les configurations recommandées. Pour une utilisation en production :
- Utilisez l’outil de dimensionnement Milvus pour optimiser les paramètres en fonction du volume de vos données
- Consultez la liste de contrôle des configurations système de Milvus pour connaître les options de configuration avancées
Remarques importantes :
- Nommage des versions: utilisez uniquement des lettres, des chiffres et des tirets (les points ne sont pas autorisés)
Pour plus d’informations, consultez le Helm Chart de Milvus et la documentation Helm.
2. Vérifiez l'état du cluster Milvus
Vérifiez que votre déploiement a bien abouti en vérifiant l’état des pods :
kubectl get pods
Attendez que tous les pods affichent le statut « Running ». Avec la configuration v3.0.1, vous devriez voir des pods similaires à ceux-ci :
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 3m23s
my-release-etcd-1 1/1 Running 0 3m23s
my-release-etcd-2 1/1 Running 0 3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm 1/1 Running 0 3m23s
my-release-milvus-mixcoord-7fb9488465-dmbbj 1/1 Running 0 3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv 1/1 Running 0 3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg 1/1 Running 0 3m24s
my-release-milvus-streamingnode-7b8cfc769c-mqmsm 1/1 Running 0 3m24s
my-release-milvus-woodpecker-0 1/1 Running 0 3m24s
my-release-milvus-woodpecker-1 1/1 Running 0 3m24s
my-release-milvus-woodpecker-2 1/1 Running 0 3m24s
my-release-milvus-woodpecker-3 1/1 Running 0 3m24s
my-release-minio-0 1/1 Running 0 3m23s
my-release-minio-1 1/1 Running 0 3m23s
my-release-minio-2 1/1 Running 0 3m23s
my-release-minio-3 1/1 Running 0 3m23s
Éléments clés à vérifier :
- Composants Milvus:
mixcoord,datanode,querynode,proxy,streamingnode - Dépendances:
etcd(métadonnées),minio(stockage d’objets),woodpecker(file d’attente de messages)
Avec streaming.woodpecker.embedded=false, Woodpecker s’exécute en tant que StatefulSet dédié (my-release-milvus-woodpecker, 4 répliques par défaut — un quorum de 3 nœuds plus un nœud de secours pour la tolérance aux pannes ; ne définissez pas woodpecker.replicaCount sur une valeur inférieure à 3) avec en avant un service sans interface graphique, utilisant MinIO comme backend de stockage — le cluster dispose donc d’un ensemble de pods woodpecker distinct, séparé du nœud de streaming.
Vous pouvez également accéder à l’interface Web de Milvus à l’adresse http://127.0.0.1:9091/webui/ une fois la redirection de port configurée (voir l’étape suivante). Pour plus de détails, consultez la documentation relative à l’interface Web de Milvus.
3. Se connecter à Milvus
Pour vous connecter à votre cluster Milvus depuis l’extérieur de Kubernetes, vous devez configurer la redirection de port.
Configurer la redirection de port :
kubectl port-forward service/my-release-milvus 27017:19530
Cette commande redirige votre port local 27017 vers le port Milvus 19530. Vous devriez voir s'afficher :
Forwarding from 127.0.0.1:27017 -> 19530
Détails de la connexion :
- Connexion locale:
localhost:27017 - Port par défaut de Milvus:
19530
Options de redirection de port :
- Attribution automatique du port local: utilisez
:19530au lieu de27017:19530pour laisser kubectl choisir un port disponible - Écouter sur toutes les interfaces: Ajoutez
--address 0.0.0.0pour autoriser les connexions depuis d'autres machines :kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530 - Déploiement autonome: si vous utilisez le mode autonome, le nom du service reste le même
Laissez ce terminal ouvert pendant que vous utilisez Milvus. Vous pouvez désormais vous connecter à Milvus à l’aide de n’importe quel SDK Milvus à l’adresse localhost:27017.
(Facultatif) Mise à jour des configurations de Milvus
Vous pouvez mettre à jour les configurations de votre cluster Milvus en modifiant le fichier values.yaml et en l'appliquant à nouveau.
Créez un fichier
values.yamlcontenant les configurations souhaitées.La procédure suivante part du principe que vous souhaitez activer la fonctionnalité «
proxy.http».extraConfigFiles: user.yaml: |+ proxy: http: enabled: truePour connaître les éléments de configuration concernés, reportez-vous à la section « Configuration du système ».
Appliquez le fichier `
values.yaml`.
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
Vérifiez les configurations mises à jour.
helm get values my-releaseLa sortie devrait afficher les configurations mises à jour.
Accéder à l'interface Web de Milvus
Milvus est fourni avec un outil graphique intégré appelé Milvus WebUI, accessible via votre navigateur. Milvus WebUI améliore la visibilité du système grâce à une interface simple et intuitive. Vous pouvez utiliser Milvus WebUI pour consulter les statistiques et les métriques des composants et des dépendances de Milvus, vérifier les détails de la base de données et des collections, et afficher la liste détaillée des configurations de Milvus. Pour plus d'informations sur l'interface Web de Milvus, consultez la page Milvus WebUI
Pour activer l’accès à Milvus WebUI, vous devez rediriger le port du pod proxy vers un port local.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Vous pouvez désormais accéder à l’interface Web de Milvus à l’adresse http://localhost:27018.
Installation hors ligne
Si vous vous trouvez dans un environnement soumis à des restrictions réseau, suivez la procédure décrite dans cette section pour démarrer un cluster Milvus.
1. Récupérer le manifeste Milvus
Exécutez la commande suivante pour récupérer le manifeste Milvus.
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
La commande ci-dessus génère des modèles de chart pour un cluster Milvus et enregistre le résultat dans un fichier manifeste nommé milvus_manifest.yaml. À l’aide de ce manifeste, vous pouvez installer un cluster Milvus dont les composants et les dépendances sont répartis dans des pods distincts.
- Pour installer une instance Milvus en mode autonome, dans laquelle tous les composants Milvus sont regroupés dans un seul pod, vous devez plutôt exécuter la commande
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false --set standalone.messageQueue=woodpecker --set woodpecker.enabled=true --set streaming.enabled=true zilliztech/milvus > milvus_manifest.yamlafin de générer les modèles de chart pour une instance Milvus en mode autonome. - Pour modifier les configurations de Milvus, téléchargez le
value.yamlmodèle, y indiquer les paramètres souhaités, puis utiliserhelm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yamlpour générer le manifeste en conséquence.
2. Télécharger le script de récupération d’images
Le script de récupération des images est développé en Python. Vous devez télécharger le script ainsi que ses dépendances dans le fichier requirement.txt.
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py
3. Récupérer et enregistrer les images
Exécutez la commande suivante pour récupérer et enregistrer les images requises.
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
Les images sont extraites dans un sous-dossier nommé « images » situé dans le répertoire courant.
4. Charger les images
Vous pouvez désormais charger les images sur les hôtes de l’environnement à accès restreint comme suit :
$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done
5. Déployer Milvus
$ kubectl apply -f milvus_manifest.yaml
Jusqu’à présent, vous pouvez suivre les étapes 2 et 3 de l’installation en ligne pour vérifier l’état du cluster et rediriger un port local vers Milvus.
Mise à jour d’un cluster Milvus en cours d’exécution
Exécutez la commande suivante pour mettre à niveau votre cluster Milvus en cours d'exécution vers la dernière version :
$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values
Désinstaller Milvus
Exécutez la commande suivante pour désinstaller Milvus.
$ helm uninstall my-release
Dépendances facultatives
Ce déploiement utilise Woodpecker comme file d’attente de messages, etcd pour les métadonnées et MinIO pour le stockage d’objets. Pour utiliser une autre file d’attente de messages ou connecter un stockage d’objets / des métadonnées externes, consultez :
- File d’attente de messages : Woodpecker (par défaut) · Pulsar · Kafka · RocksMQ
- Stockage d'objets : MinIO (par défaut) · AWS S3 · Azure Blob · GCP Cloud Storage · Aliyun OSS · Tencent COS · Huawei OBS · Compatible S3
- Métadonnées : etcd
Storage V3 est désactivé par défaut. Activez-le avant d’utiliser les fonctionnalités qui en dépendent. Pour connaître les exigences et les considérations de compatibilité, consultez la page Storage V3.
Et ensuite
Une fois Milvus installé dans Docker, vous pouvez :
Consulter la page « Hello Milvus » pour découvrir les capacités de Milvus.
Apprendre les opérations de base de Milvus :
Déployez votre cluster Milvus sur le cloud :
Découvrez Milvus WebUI, une interface web intuitive pour la surveillance et la gestion de Milvus.
Découvrez Milvus Backup, un outil open source dédié aux sauvegardes de données Milvus.
Découvrez Birdwatcher, un outil open source dédié au débogage de Milvus et aux mises à jour dynamiques de configuration.
Découvrez Attu, un outil GUI open source permettant une gestion intuitive de Milvus.