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

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 :

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 :19530 au lieu de 27017:19530 pour laisser kubectl choisir un port disponible
  • Écouter sur toutes les interfaces: Ajoutez --address 0.0.0.0 pour 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.

  1. Créez un fichier values.yaml contenant 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: true
    

    Pour connaître les éléments de configuration concernés, reportez-vous à la section « Configuration du système ».

  2. Appliquez le fichier ` values.yaml `.

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. Vérifiez les configurations mises à jour.

    helm get values my-release
    

    La 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.yaml afin 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.yaml modèle, y indiquer les paramètres souhaités, puis utiliser helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml pour 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 :

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 :