🚀 Testen Sie Zilliz Cloud, die vollständig verwaltete Milvus, kostenlos – erleben Sie 10x schnellere Leistung! Jetzt testen>>

milvus-logo
LFAI
  • Home
  • Blog
  • Einsatz von Milvus auf Kubernetes: Eine Schritt-für-Schritt-Anleitung für Kubernetes-Benutzer

Einsatz von Milvus auf Kubernetes: Eine Schritt-für-Schritt-Anleitung für Kubernetes-Benutzer

  • Engineering
September 26, 2024
Gael Gu

Milvus ist eine Open-Source-Vektordatenbank, die zum Speichern, Indizieren und Durchsuchen riesiger Mengen unstrukturierter Daten durch Vektordarstellungen entwickelt wurde. Damit eignet sie sich perfekt für KI-gesteuerte Anwendungen wie Ähnlichkeitssuche, semantische Suche, Retrieval Augmented Generation(RAG), Empfehlungsmaschinen und andere maschinelle Lernaufgaben.

Was Milvus jedoch noch leistungsfähiger macht, ist seine nahtlose Integration in Kubernetes. Wenn Sie ein Kubernetes-Kenner sind, wissen Sie, dass die Plattform perfekt für die Orchestrierung skalierbarer, verteilter Systeme ist. Milvus nutzt die Möglichkeiten von Kubernetes in vollem Umfang und ermöglicht Ihnen die einfache Bereitstellung, Skalierung und Verwaltung verteilter Milvus-Cluster. Dieser Leitfaden bietet eine klare, schrittweise Anleitung für die Einrichtung von Milvus auf Kubernetes unter Verwendung des Milvus Operators.

Voraussetzungen

Bevor wir beginnen, sollten Sie sicherstellen, dass die folgenden Voraussetzungen erfüllt sind:

  • Ein Kubernetes-Cluster ist eingerichtet und läuft. Wenn Sie lokal testen, ist minikube eine gute Wahl.

  • kubectl Die Kubernetes-Software ist installiert und so konfiguriert, dass sie mit Ihrem Kubernetes-Cluster interagiert.

  • Vertrautheit mit grundlegenden Kubernetes-Konzepten wie Pods, Services und Deployments.

Schritt 1: Installieren von Minikube (für lokale Tests)

Wenn Sie eine lokale Kubernetes-Umgebung einrichten müssen, ist minikube das richtige Tool für Sie. Offizielle Installationsanweisungen finden Sie auf der Seite minikube getting started.

1. Minikube installieren

Besuchen Sie die minikube releases Seite und laden Sie die passende Version für Ihr Betriebssystem herunter. Für macOS/Linux können Sie den folgenden Befehl verwenden:

$ 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. Starten Sie Minikube

$ minikube start

3. Mit Cluster interagieren

Nun können Sie mit kubectl innerhalb von minikube mit Ihren Clustern interagieren. Wenn Sie kubectl nicht installiert haben, wird minikube die entsprechende Version standardmäßig herunterladen.

$ minikube kubectl cluster-info

Alternativ können Sie auch einen symbolischen Link auf die Minikube-Binärdatei mit dem Namen kubectl erstellen, um die Verwendung zu erleichtern.

$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info

Schritt 2: Konfigurieren der StorageClass

In Kubernetes definiert eine StorageClass die für Ihre Workloads verfügbaren Speichertypen und bietet so Flexibilität bei der Verwaltung verschiedener Speicherkonfigurationen. Bevor Sie fortfahren, müssen Sie sicherstellen, dass eine Standard-StorageClass in Ihrem Cluster verfügbar ist. Im Folgenden erfahren Sie, wie Sie eine solche überprüfen und gegebenenfalls konfigurieren.

1. Überprüfen der installierten StorageClasses

Um die verfügbaren StorageClasses in Ihrem Kubernetes-Cluster zu sehen, führen Sie den folgenden Befehl aus:

$ kubectl get sc

Dadurch wird die Liste der in Ihrem Cluster installierten Speicherklassen angezeigt. Wenn bereits eine Standard-StorageClass konfiguriert ist, wird sie mit (default) markiert.

2. Konfigurieren Sie eine Standard-StorageClass (falls erforderlich)

Ist keine Standard-StorageClass eingestellt, können Sie eine solche in einer YAML-Datei definieren. Verwenden Sie das folgende Beispiel, um eine Standard-StorageClass zu erstellen:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
 name: default-storageclass
provisioner: k8s.io/minikube-hostpath

Diese YAML-Konfiguration definiert eine StorageClass mit dem Namen default-storageclass, die den in lokalen Entwicklungsumgebungen häufig verwendeten Provisioner minikube-hostpath verwendet.

3. Anwenden der StorageClass

Sobald die Datei default-storageclass.yaml erstellt ist, wenden Sie sie mit dem folgenden Befehl auf Ihren Cluster an:

$ kubectl apply -f default-storageclass.yaml

Dadurch wird die Standard-StorageClass für Ihren Cluster eingerichtet und sichergestellt, dass Ihre Speicheranforderungen in Zukunft ordnungsgemäß verwaltet werden.

Schritt 3: Installieren von Milvus mit dem Milvus Operator

Der Milvus Operator vereinfacht die Bereitstellung von Milvus auf Kubernetes und verwaltet die Bereitstellung, Skalierung und Updates. Bevor Sie den Milvus Operator installieren, müssen Sie den cert-manager installieren, der Zertifikate für den Webhook-Server bereitstellt, der vom Milvus Operator verwendet wird.

1. cert-manager installieren

Milvus Operator benötigt einen cert-manager, um Zertifikate für die sichere Kommunikation zu verwalten. Stellen Sie sicher, dass Sie cert-manager Version 1.1.3 oder höher installieren. Führen Sie den folgenden Befehl aus, um ihn zu installieren:

$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml

Überprüfen Sie nach der Installation, ob die cert-manager-Pods ausgeführt werden, indem Sie diesen Befehl ausführen:

$ kubectl get pods -n cert-manager

2. Installieren Sie den Milvus Operator

Sobald der cert-manager läuft, können Sie den Milvus Operator installieren. Führen Sie den folgenden Befehl aus, um ihn mit kubectl zu installieren:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml

Mit dem folgenden Befehl können Sie überprüfen, ob der Milvus Operator-Pod ausgeführt wird:

$ kubectl get pods -n milvus-operator

3. Milvus Cluster bereitstellen

Sobald der Milvus Operator-Pod läuft, können Sie einen Milvus-Cluster mit dem Operator bereitstellen. Mit dem folgenden Befehl wird ein Milvus-Cluster mit seinen Komponenten und Abhängigkeiten in separaten Pods mit Standardkonfigurationen bereitgestellt:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

Um die Milvus-Einstellungen anzupassen, müssen Sie die YAML-Datei durch Ihre eigene Konfigurations-YAML-Datei ersetzen. Neben der manuellen Bearbeitung oder Erstellung der Datei können Sie auch das Milvus Sizing Tool verwenden, um die Konfigurationen anzupassen und dann die entsprechende YAML-Datei herunterladen.

Um die Milvus-Einstellungen anzupassen, müssen Sie die Standard-YAML-Datei durch Ihre eigene Konfiguration ersetzen. Sie können diese Datei entweder manuell bearbeiten oder erstellen, um sie an Ihre speziellen Anforderungen anzupassen.

Alternativ können Sie auch das Milvus Sizing Tool verwenden, um einen effizienteren Ansatz zu verfolgen. Mit diesem Tool können Sie verschiedene Einstellungen, wie z. B. die Ressourcenzuweisung und Speicheroptionen, anpassen und anschließend die entsprechende YAML-Datei mit Ihren gewünschten Konfigurationen herunterladen. Dadurch wird sichergestellt, dass Ihre Milvus-Bereitstellung für Ihren spezifischen Anwendungsfall optimiert ist.

Abbildung: Milvus-Sizing-Tool

Es kann einige Zeit dauern, bis die Bereitstellung abgeschlossen ist. Sie können den Status Ihres Milvus-Clusters über den Befehl überprüfen:

$ kubectl get milvus my-release

Sobald Ihr Milvus-Cluster bereit ist, sollten alle Pods im Milvus-Cluster laufen oder abgeschlossen sein:

$ kubectl get pods

Schritt 4: Zugriff auf Ihren Milvus-Cluster

Sobald Ihr Milvus-Cluster bereitgestellt ist, müssen Sie auf ihn zugreifen, indem Sie einen lokalen Port an den Milvus-Service-Port weiterleiten. Führen Sie die folgenden Schritte aus, um den Service-Port abzurufen und die Portweiterleitung einzurichten.

1. Abrufen des Service-Ports

Ermitteln Sie zunächst den Service-Port mit dem folgenden Befehl. Ersetzen Sie <YOUR_MILVUS_PROXY_POD> durch den Namen Ihres Milvus-Proxy-Pods, der normalerweise mit my-release-milvus-proxy- beginnt:

$ kubectl get pod <YOUR_MILVUS_PROXY_POD> --template ='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'

Dieser Befehl gibt die Portnummer zurück, die Ihr Milvus-Dienst verwendet.

2. Leiten Sie den Port weiter

Um lokal auf Ihren Milvus-Cluster zuzugreifen, leiten Sie mit dem folgenden Befehl einen lokalen Port an den Port des Dienstes weiter. Ersetzen Sie <YOUR_LOCAL_PORT> durch den lokalen Port, den Sie verwenden möchten, und <YOUR_SERVICE_PORT> durch den im vorherigen Schritt abgerufenen Service-Port:

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus <YOUR_LOCAL_PORT>:<YOUR_SERVICE_PORT>

Mit diesem Befehl kann die Port-Weiterleitung alle IP-Adressen des Host-Rechners abhören. Wenn der Dienst nur localhost abhören soll, können Sie die Option --address 0.0.0.0 weglassen.

Sobald die Port-Weiterleitung eingerichtet ist, können Sie für weitere Operationen oder Integrationen über den angegebenen lokalen Port auf Ihren Milvus-Cluster zugreifen.

Schritt 5: Verbindung zu Milvus mit Python SDK

Nachdem Ihr Milvus-Cluster eingerichtet und in Betrieb ist, können Sie nun mit Hilfe eines beliebigen Milvus-SDKs mit ihm interagieren. In diesem Beispiel verwenden wir PyMilvus, das Python-SDK von Milvus , um uns mit dem Cluster zu verbinden und grundlegende Operationen durchzuführen.

1. PyMilvus installieren

Um mit Milvus über Python zu interagieren, müssen Sie das Paket pymilvus installieren:

$ pip install pymilvus

2. Verbindung zu Milvus herstellen

Im Folgenden finden Sie ein Beispiel für ein Python-Skript, das eine Verbindung zu Ihrem Milvus-Cluster herstellt und die Durchführung grundlegender Operationen wie die Erstellung einer Sammlung demonstriert.

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
)

Erläuterung:

  • Verbindung zu Milvus herstellen: Das Skript stellt eine Verbindung zum Milvus-Server her, der auf localhost läuft, wobei der lokale Port verwendet wird, den Sie in Schritt 4 eingerichtet haben.

  • Erstellen Sie eine Sammlung: Das Skript prüft, ob eine Sammlung mit dem Namen example_collection bereits existiert, löscht sie, wenn dies der Fall ist, und erstellt dann eine neue Sammlung mit Vektoren der Dimension 768.

Dieses Skript stellt eine Verbindung zum Milvus-Cluster her und erstellt eine Sammlung, die als Ausgangspunkt für komplexere Operationen wie das Einfügen von Vektoren und die Durchführung von Ähnlichkeitssuchen dient.

Schlussfolgerung

Der Einsatz von Milvus in einem verteilten Setup auf Kubernetes erschließt leistungsstarke Funktionen für die Verwaltung großer Vektordaten und ermöglicht nahtlose Skalierbarkeit und leistungsstarke KI-gesteuerte Anwendungen. In diesem Leitfaden haben Sie gelernt, wie Sie Milvus mit dem Milvus Operator einrichten und so den Prozess rationalisieren und effizient gestalten können.

Wenn Sie Milvus weiter erkunden, sollten Sie in Erwägung ziehen, Ihren Cluster zu skalieren, um wachsenden Anforderungen gerecht zu werden, oder ihn auf Cloud-Plattformen wie Amazon EKS, Google Cloud oder Microsoft Azure bereitzustellen. Für eine verbesserte Verwaltung und Überwachung bieten Tools wie Milvus Backup, Birdwatcher und Attu wertvolle Unterstützung bei der Aufrechterhaltung des Zustands und der Leistung Ihrer Bereitstellungen.

Sie sind nun bereit, das volle Potenzial von Milvus auf Kubernetes zu nutzen - viel Spaß beim Deployment! 🚀

Weitere Ressourcen

Like the article? Spread the word

Weiterlesen