🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI
  • Home
  • Blog
  • Déploiement de Milvus sur Kubernetes : Un guide pas à pas pour les utilisateurs de Kubernetes

Déploiement de Milvus sur Kubernetes : Un guide pas à pas pour les utilisateurs de Kubernetes

  • Engineering
September 26, 2024
Gael Gu

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

Like the article? Spread the word

Continuer à Lire