Déploiement de Milvus sur Kubernetes : Un guide pas à pas pour les utilisateurs de Kubernetes
Milvus est une base de données vectorielle open-source conçue pour stocker, indexer et rechercher des quantités massives de données non structurées par le biais de représentations vectorielles, ce qui la rend parfaite pour les applications axées sur l'IA, telles que la recherche de similitudes, la recherche sémantique, la génération augmentée de récupération(RAG), les moteurs de recommandation et d'autres tâches d'apprentissage automatique.
Mais ce qui rend Milvus encore plus puissant, c'est son intégration transparente avec Kubernetes. Si vous êtes un aficionado de Kubernetes, vous savez que la plateforme est parfaite pour orchestrer des systèmes évolutifs et distribués. Milvus tire pleinement parti des capacités de Kubernetes, ce qui vous permet de déployer, de faire évoluer et de gérer facilement les clusters Milvus distribués. Ce guide fournit une description claire, étape par étape, de la configuration de Milvus sur Kubernetes à l'aide de l'opérateur Milvus.
Conditions préalables
Avant de commencer, assurez-vous de disposer des conditions préalables suivantes :
Un cluster Kubernetes opérationnel. Si vous testez localement,
minikube
est un excellent choix.kubectl
Un logiciel de gestion de la sécurité installé et configuré pour interagir avec votre cluster Kubernetes.Familiarité avec les concepts de base de Kubernetes tels que les pods, les services et les déploiements.
Étape 1 : Installation de Minikube (pour les tests locaux)
Si vous avez besoin de mettre en place un environnement Kubernetes local, minikube
est l'outil qu'il vous faut. Les instructions d'installation officielles se trouvent sur la page de démarrage de Minikube.
1. Installer Minikube
Visitez la page des versions de minikube et téléchargez la version appropriée pour votre système d'exploitation. Pour macOS/Linux, vous pouvez utiliser la commande suivante :
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
2. Démarrez Minikube
$ minikube start
3. Interagir avec le cluster
Maintenant, vous pouvez interagir avec vos clusters avec kubectl à l'intérieur de minikube. Si vous n'avez pas installé kubectl, Minikube téléchargera la version appropriée par défaut.
$ minikube kubectl cluster-info
Sinon, vous pouvez créer un lien symbolique vers le binaire de minikube nommé kubectl
pour une utilisation plus facile.
$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info
Étape 2 : Configuration de la classe de stockage (StorageClass)
Dans Kubernetes, une StorageClass définit les types de stockage disponibles pour vos charges de travail, offrant une flexibilité dans la gestion de différentes configurations de stockage. Avant de poursuivre, vous devez vous assurer qu'une StorageClass par défaut est disponible dans votre cluster. Voici comment vérifier et configurer une classe de stockage si nécessaire.
1. Vérifier les classes de stockage installées
Pour voir les StorageClass disponibles dans votre cluster Kubernetes, exécutez la commande suivante :
$ kubectl get sc
La liste des classes de stockage installées dans votre cluster s'affiche. Si une StorageClass par défaut est déjà configurée, elle sera marquée par (default)
.
2. Configurer une classe de stockage par défaut (si nécessaire)
Si aucune StorageClass par défaut n'est configurée, vous pouvez en créer une en la définissant dans un fichier YAML. Utilisez l'exemple suivant pour créer une classe de stockage par défaut :
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: default-storageclass
provisioner: k8s.io/minikube-hostpath
Cette configuration YAML définit un site StorageClass
appelé default-storageclass
qui utilise le provisionneur minikube-hostpath
, couramment utilisé dans les environnements de développement local.
3. Appliquer la StorageClass
Une fois le fichier default-storageclass.yaml
créé, appliquez-le à votre cluster à l'aide de la commande suivante :
$ kubectl apply -f default-storageclass.yaml
Ceci configurera la StorageClass par défaut pour votre cluster, garantissant que vos besoins de stockage seront correctement gérés à l'avenir.
Étape 3 : Installation de Milvus à l'aide de Milvus Operator
Milvus Operator simplifie le déploiement de Milvus sur Kubernetes, en gérant le déploiement, la mise à l'échelle et les mises à jour. Avant d'installer l'opérateur Milvus, vous devez installer le gestionnaire de certificats, qui fournit des certificats pour le serveur webhook utilisé par l'opérateur Milvus.
1. Installer le cert-manager
Milvus Operator nécessite un cert-manager pour gérer les certificats pour une communication sécurisée. Veillez à installer cert-manager version 1.1.3 ou ultérieure. Pour l'installer, exécutez la commande suivante :
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
Après l'installation, vérifiez que les pods de cert-manager sont en cours d'exécution en exécutant :
$ kubectl get pods -n cert-manager
2. Installer l'opérateur Milvus
Une fois que le cert-manager est opérationnel, vous pouvez installer l'opérateur Milvus. Exécutez la commande suivante pour le déployer à l'aide de kubectl
:
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Vous pouvez vérifier si le pod Milvus Operator est en cours d'exécution à l'aide de la commande suivante :
$ kubectl get pods -n milvus-operator
3. Déployer le cluster Milvus
Une fois que le pod Milvus Operator est en cours d'exécution, vous pouvez déployer un cluster Milvus avec l'opérateur. La commande suivante déploie un cluster Milvus avec ses composants et dépendances dans des pods séparés en utilisant les configurations par défaut :
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
Pour personnaliser les paramètres Milvus, vous devrez remplacer le fichier YAML par votre propre fichier YAML de configuration. Outre la modification ou la création manuelle du fichier, vous pouvez utiliser l'outil de dimensionnement Milvus pour ajuster les configurations, puis télécharger le fichier YAML correspondant.
Pour personnaliser les paramètres de Milvus, vous devez remplacer le fichier YAML par défaut par votre propre configuration. Vous pouvez modifier ou créer ce fichier manuellement, en l'adaptant à vos besoins spécifiques.
Vous pouvez également utiliser l'outil de dimensionnement Milvus pour une approche plus rationnelle. Cet outil vous permet d'ajuster divers paramètres, tels que l'allocation des ressources et les options de stockage, puis de télécharger le fichier YAML correspondant avec les configurations souhaitées. Cela garantit que votre déploiement Milvus est optimisé pour votre cas d'utilisation spécifique.
Figure : Outil de dimensionnement de Milvus
Le déploiement peut prendre un certain temps. Vous pouvez vérifier l'état de votre cluster Milvus via la commande :
$ kubectl get milvus my-release
Une fois que votre cluster Milvus est prêt, tous les pods du cluster Milvus doivent être en cours d'exécution ou terminés :
$ kubectl get pods
Étape 4 : Accès à votre cluster Milvus
Une fois votre cluster Milvus déployé, vous devez y accéder en transférant un port local vers le port de service Milvus. Suivez ces étapes pour récupérer le port de service et configurer le transfert de port.
1. Récupérer le port de service
Tout d'abord, identifiez le port de service à l'aide de la commande suivante. Remplacez <YOUR_MILVUS_PROXY_POD>
par le nom de votre pod proxy Milvus, qui commence généralement par my-release-milvus-proxy-
:
$ kubectl get pod <YOUR_MILVUS_PROXY_POD> --template ='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
Cette commande renverra le numéro de port que votre service Milvus utilise.
2. Transférer le port
Pour accéder localement à votre cluster Milvus, transférez un port local vers le port du service à l'aide de la commande suivante. Remplacez <YOUR_LOCAL_PORT>
par le port local que vous souhaitez utiliser et <YOUR_SERVICE_PORT>
par le port de service récupéré à l'étape précédente :
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus <YOUR_LOCAL_PORT>:<YOUR_SERVICE_PORT>
Cette commande permet à la redirection de port d'écouter toutes les adresses IP de la machine hôte. Si vous souhaitez que le service n'écoute que sur localhost
, vous pouvez omettre l'option --address 0.0.0.0
.
Une fois le transfert de port configuré, vous pouvez accéder à votre cluster Milvus via le port local spécifié pour d'autres opérations ou intégrations.
Étape 5 : Connexion à Milvus à l'aide du SDK Python
Votre cluster Milvus étant opérationnel, vous pouvez maintenant interagir avec lui à l'aide de n'importe quel SDK Milvus. Dans cet exemple, nous utiliserons PyMilvus, le SDK Python de Milvus , pour nous connecter au cluster et effectuer des opérations de base.
1. Installer PyMilvus
Pour interagir avec Milvus via Python, vous devez installer le paquet pymilvus
:
$ pip install pymilvus
2. Se connecter à Milvus
Voici un exemple de script Python qui se connecte à votre cluster Milvus et montre comment effectuer des opérations de base telles que la création d'une collection.
from pymilvus import MilvusClient
# Connect to the Milvus server
client = MilvusClient(uri="http://localhost:<YOUR_LOCAL_PORT>")
# Create a collection
collection_name = "example_collection"
if client.has_collection(collection_name):
client.drop_collection(collection_name)
client.create_collection(
collection_name=collection_name,
dimension=768, # The vectors we will use in this demo has 768 dimensions
)
Explication :
Connexion à Milvus : le script se connecte au serveur Milvus exécuté sur
localhost
à l'aide du port local défini à l'étape 4.Créer une collection : Il vérifie si une collection nommée
example_collection
existe déjà, la supprime si c'est le cas, puis crée une nouvelle collection avec des vecteurs de 768 dimensions.
Ce script établit une connexion avec le cluster Milvus et crée une collection, servant de point de départ à des opérations plus complexes telles que l'insertion de vecteurs et l'exécution de recherches de similarité.
Conclusion
Le déploiement de Milvus dans une configuration distribuée sur Kubernetes déverrouille de puissantes capacités de gestion de données vectorielles à grande échelle, permettant une évolutivité transparente et des applications performantes axées sur l'IA. En suivant ce guide, vous avez appris à configurer Milvus à l'aide de Milvus Operator, ce qui rend le processus rationalisé et efficace.
En continuant à explorer Milvus, envisagez de faire évoluer votre cluster pour répondre aux demandes croissantes ou de le déployer sur des plates-formes cloud telles qu'Amazon EKS, Google Cloud ou Microsoft Azure. Pour une gestion et une surveillance améliorées, des outils tels que Milvus Backup, Birdwatcher et Attu offrent une assistance précieuse pour maintenir la santé et les performances de vos déploiements.
Vous êtes maintenant prêt à exploiter tout le potentiel de Milvus sur Kubernetes : bon déploiement ! 🚀
Autres ressources
- Conditions préalables
- Étape 1 : Installation de Minikube (pour les tests locaux)
- Étape 2 : Configuration de la classe de stockage (StorageClass)
- Étape 3 : Installation de Milvus à l'aide de Milvus Operator
- Étape 4 : Accès à votre cluster Milvus
- Étape 5 : Connexion à Milvus à l'aide du SDK Python
- Conclusion
- Autres ressources
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word