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 false
Vé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écrivant 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 milvus 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é et vous pouvez obtenir des mises à jour supplémentaires à l'adresse https://github.com/zilliztech/milvus-helm
comme suit :
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus
Le dépôt archivé est toujours disponible pour les cartes jusqu'à la version 4.0.31. Pour les versions ultérieures, utilisez plutôt le nouveau repo.
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 que vous avez installé la carte Helm, vous pouvez démarrer Milvus sur Kubernetes. Cette section vous guidera à travers les étapes de démarrage de Milvus.
$ helm install my-release milvus/milvus
Dans la commande ci-dessus, my-release
est le nom de la version et milvus/milvus
est le référentiel graphique installé localement. Pour utiliser un nom différent, remplacez my-release
par celui qui vous convient.
La commande ci-dessus déploie un cluster Milvus avec ses composants et dépendances en utilisant les configurations par défaut. Pour personnaliser ces paramètres, nous vous recommandons d'utiliser l'outil de dimensionnement Milvus pour ajuster les configurations en fonction de la taille réelle de vos données, puis de télécharger le fichier YAML correspondant. Pour en savoir plus sur les paramètres de configuration, reportez-vous à la liste de contrôle des configurations du système Milvus.
- Le nom de la version ne doit contenir que des lettres, des chiffres et des tirets. Les points ne sont pas autorisés dans le nom de la version.
- La ligne de commande par défaut installe la version cluster de Milvus lors de l'installation de Milvus avec Helm. D'autres paramètres sont nécessaires lors de l'installation autonome de Milvus.
- Selon le guide de migration des API obsolètes de Kubernetes, la version API policy/v1beta1 de PodDisruptionBudget n'est plus servie à partir de la version 1.25. Il vous est suggéré de migrer les manifestes et les clients API pour utiliser la version API policy/v1 à la place.
En guise de solution de contournement pour les utilisateurs qui utilisent encore la version API policy/v1beta1 de PodDisruptionBudget sur Kubernetes v1.25 et ultérieures, vous pouvez exécuter la commande suivante pour installer Milvus :
.helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false
- Voir Milvus Helm Chart et Helm pour plus d'informations.
2. Vérifier l'état du cluster Milvus
Exécutez la commande suivante pour vérifier l'état de tous les pods de votre cluster Milvus.
$ kubectl get pods
Une fois que tous les pods sont en cours d'exécution, la sortie de la commande ci-dessus devrait être similaire à ce qui suit :
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-indexnode-5c5f7b5bd9-l8hjg 1/1 Running 0 3m24s
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-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
3. Transférer un port local vers Milvus
Exécutez la commande suivante pour obtenir le port sur lequel votre cluster Milvus fonctionne.
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
La sortie montre que l'instance Milvus dessert le port par défaut 19530.
Si vous avez déployé Milvus en mode autonome, modifiez le nom du pod de my-release-milvus-proxy-xxxxxxxxxx-xxxxx
à my-release-milvus-xxxxxxxxxx-xxxxx
.
Ensuite, exécutez la commande suivante pour transférer un port local vers le port sur lequel Milvus fonctionne.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
En option, vous pouvez utiliser :19530
au lieu de 27017:19530
dans la commande ci-dessus pour permettre à kubectl
d'allouer un port local pour vous afin que vous n'ayez pas à gérer les conflits de port.
Par défaut, le port-forwarding de kubectl n'écoute que sur localhost
. Utilisez l'indicateur address
si vous souhaitez que Milvus écoute sur l'adresse IP sélectionnée ou sur toutes les adresses IP. La commande suivante fait en sorte que port-forward écoute sur toutes les adresses IP de la machine hôte.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
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 milvus/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 pulsar.enabled=false milvus/milvus > milvus_manifest.yaml
pour 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.yaml
placez-y les paramètres souhaités et utilisezhelm template -f values.yaml my-release milvus/milvus > milvus_manifest.yaml
pour 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
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 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.