Exécuter Milvus dans Kubernetes avec Helm
Cette page explique comment démarrer une instance Milvus dans Kubernetes à l'aide des cartes Milvus Helm.
Vue d'ensemble
Helm utilise un format d'emballage appelé diagrammes. Un diagramme est une collection de fichiers qui décrivent un ensemble connexe de ressources Kubernetes. Milvus fournit un ensemble de diagrammes pour vous aider à déployer les dépendances et les composants Milvus.
Conditions préalables
Installer 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érifier 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 de la taille de vos données. Cela permet de garantir des performances et une allocation de ressources optimales pour l'installation de Milvus.
Si vous rencontrez des problèmes en tirant l'image, contactez-nous à l'adresse community@zilliz.com en détaillant le problème, et nous vous fournirons l'assistance nécessaire.
Installation de Milvus Helm Chart
Avant d'installer Milvus Helm Charts, vous devez ajouter le référentiel Milvus Helm.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
Le dépôt Milvus Helm Charts à l'adresse https://github.com/milvus-io/milvus-helm a été archivé. Nous utilisons maintenant le nouveau dépôt à l'adresse https://github.com/zilliztech/milvus-helm. Le dépôt archivé est toujours disponible pour les cartes jusqu'à la version 4.0.31, mais utilisez le nouveau dépôt pour les versions ultérieures.
Récupérez ensuite les cartes Milvus à partir du dépôt comme suit :
$ helm repo update
Vous pouvez toujours exécuter cette commande pour récupérer les dernières cartes Milvus Helm.
Installation en ligne
1. Déployer un cluster Milvus
Une fois la carte Helm installée, vous pouvez démarrer Milvus sur Kubernetes. Cette section vous guide dans le déploiement d'un cluster Milvus.
Besoin d'un déploiement autonome ?
Si vous préférez déployer Milvus en mode autonome (nœud unique) pour le développement ou les tests, utilisez cette commande :
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.16 \
--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. Pour plus d'informations, reportez-vous aux sections Présentation de l'architecture et Utiliser Woodpecker.
Déployer un cluster Milvus :
La commande suivante déploie un cluster Milvus avec des paramètres optimisés pour la version 2.6.16, en utilisant Woodpecker comme file d'attente de messages recommandée :
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.16 \
--set pulsarv3.enabled=false \
--set woodpecker.enabled=true \
--set streaming.enabled=true \
--set indexNode.enabled=false
Ce que fait cette commande :
- Utilise Woodpecker comme file d'attente de messages (recommandé pour réduire la maintenance).
- Active le nouveau composant Streaming Node pour améliorer les performances.
- Désactive l'ancien nœud d'index (la fonctionnalité est désormais gérée par le nœud de données).
- Désactive Pulsar pour utiliser Woodpecker à la place.
Modifications de l'architecture dans Milvus 2.6.x :
- File d'attente des 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, voir l'aperçu de l'architecture.
Autres options de file d'attente de messages :
Si vous préférez utiliser Pulsar (choix traditionnel) au lieu de Woodpecker :
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.16 \
--set streaming.enabled=true \
--set indexNode.enabled=false
Etapes suivantes :La commande ci-dessus déploie Milvus avec les configurations recommandées. Pour une utilisation en production :
- Utiliser l'outil de dimensionnement Milvus pour optimiser les paramètres en fonction de la taille de vos données.
- Examiner la liste de contrôle des configurations du système Milvus pour les options de configuration avancées.
Remarques importantes :
- Dénomination des versions: Utilisez uniquement des lettres, des chiffres et des tirets (aucun point n'est autorisé).
- Kubernetes v1.25+: si vous rencontrez des problèmes PodDisruptionBudget, utilisez cette solution de contournement :
helm install my-release zilliztech/milvus \ --set pulsar.bookkeeper.pdb.usePolicy=false \ --set pulsar.broker.pdb.usePolicy=false \ --set pulsar.proxy.pdb.usePolicy=false \ --set pulsar.zookeeper.pdb.usePolicy=false
Pour plus d'informations, voir Milvus Helm Chart et la documentation Helm.
2. Vérifier l'état du cluster Milvus
Vérifiez que votre déploiement est réussi en contrôlant l'état des pods :
kubectl get pods
Attendez que tous les pods affichent l'état "Running". Avec la configuration v2.6.16, vous devriez voir des pods similaires à :
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-streaming-node-xxxxxxxxx 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
my-release-pulsar-autorecovery-86f5dbdf77-lchpc 1/1 Running 0 3m24s
my-release-pulsar-bookkeeper-0 1/1 Running 0 3m23s
my-release-pulsar-bookkeeper-1 1/1 Running 0 98s
my-release-pulsar-broker-556ff89d4c-2m29m 1/1 Running 0 3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-0 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-metadata-98zbr 0/1 Completed 0 3m24s
Composants clés à vérifier :
- Composants Milvus:
mixcoord,datanode,querynode,proxy,streaming-node - Dépendances:
etcd(métadonnées),minio(stockage d'objets),pulsar(file d'attente de messages)
Vous pouvez également accéder à l'interface Web Milvus à l'adresse http://127.0.0.1:9091/webui/ une fois que le transfert de port est configuré (voir l'étape suivante). Pour plus de détails, voir Milvus WebUI.
3. Connexion à 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 transfère votre port local 27017 vers le port Milvus 19530. Vous devriez voir :
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 transfert de port :
- Auto-assign local port: Utilisez
:19530au lieu de27017:19530pour permettre à kubectl de choisir un port disponible. - Écouter sur toutes les interfaces: Ajouter
--address 0.0.0.0pour autoriser les connexions à partir 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.
Gardez ce terminal ouvert pendant l'utilisation de Milvus. Vous pouvez maintenant vous connecter à Milvus à l'aide de n'importe quel SDK Milvus à l'adresse localhost:27017.
(Facultatif) Mise à jour des configurations Milvus
Vous pouvez mettre à jour les configurations de votre cluster Milvus en modifiant le fichier values.yaml et en l'appliquant à nouveau.
Créer un fichier
values.yamlavec les configurations souhaitées.Ce qui suit suppose que vous souhaitez activer
proxy.http.extraConfigFiles: user.yaml: |+ proxy: http: enabled: truePour les éléments de configuration applicables, voir 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 doit montrer les configurations mises à jour.
Accès à l'interface Web de Milvus
Milvus est livré avec un outil GUI intégré appelé Milvus WebUI auquel vous pouvez accéder via votre navigateur. Milvus WebUI améliore l'observabilité du système grâce à une interface simple et intuitive. Vous pouvez utiliser l'interface Web Milvus pour observer 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 de la collection, et répertorier les configurations détaillées de Milvus. Pour plus de détails sur l'interface Web de Milvus, voir l'interface Web de Milvus.
Pour permettre l'accès à l'interface Web Milvus, 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 où le réseau est restreint, suivez la procédure de cette section pour démarrer un cluster Milvus.
1. Obtenir le manifeste Milvus
Exécutez la commande suivante pour obtenir le manifeste Milvus.
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
La commande ci-dessus rend les modèles de graphiques pour un cluster Milvus et enregistre la sortie dans un fichier de manifeste nommé milvus_manifest.yaml. À l'aide de ce manifeste, vous pouvez installer un cluster Milvus avec ses composants et dépendances dans des pods distincts.
- Pour installer une instance Milvus en mode autonome, où tous les composants Milvus sont contenus dans un seul pod, vous devez plutôt exécuter
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yamlpour rendre les modèles de graphiques pour une instance Milvus en mode autonome. - Pour modifier les configurations de Milvus, téléchargez le modèle
value.yamlplacez-y les paramètres souhaités et utilisezhelm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yamlpour rendre le manifeste en conséquence.
2. Télécharger le script d'extraction d'images
Le script d'extraction d'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. Extraire et enregistrer les images
Exécutez la commande suivante pour extraire et enregistrer les images requises.
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
Les images sont placées dans un sous-dossier nommé images dans le répertoire actuel.
4. Charger les images
Vous pouvez maintenant charger les images sur les hôtes dans l'environnement limité par le réseau en procédant 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 transmettre un port local à Milvus.
Mise à niveau du 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
Prochaines étapes
Après avoir installé Milvus dans Docker, vous pouvez :
Vérifier Hello Milvus pour voir ce que Milvus peut faire.
Apprendre les opérations de base de Milvus :
Déployer votre cluster Milvus sur des clouds :
Découvrez Milvus WebUI, une interface web intuitive pour l'observabilité et la gestion de Milvus.
Découvrez Milvus Backup, un outil open-source pour les sauvegardes de données Milvus.
Découvrez Birdwatcher, un outil open-source pour le débogage de Milvus et les mises à jour dynamiques de la configuration.
Découvrez Attu, un outil GUI open-source pour la gestion intuitive de Milvus.