Milvus in Kubernetes mit Helm ausführen
Auf dieser Seite wird erläutert, wie Sie eine Milvus-Instanz in Kubernetes mithilfe von Milvus-Helm-Charts starten.
Übersicht
Helm verwendet ein Paketformat namens „Charts“. Ein Chart ist eine Sammlung von Dateien, die eine zusammengehörige Gruppe von Kubernetes-Ressourcen beschreiben. Milvus stellt eine Reihe von Charts bereit, die Ihnen bei der Bereitstellung von Milvus-Abhängigkeiten und -Komponenten helfen.
Voraussetzungen
Installieren Sie eine StorageClass. Sie können die installierte StorageClass wie folgt überprüfen.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseÜberprüfen Sie vor der Installation die Hardware- und Softwareanforderungen.
Vor der Installation von Milvus wird empfohlen, das Milvus Sizing Tool zu verwenden, um die Hardwareanforderungen basierend auf Ihrer Datenmenge abzuschätzen. Dies trägt dazu bei, eine optimale Leistung und Ressourcenzuweisung für Ihre Milvus-Installation sicherzustellen.
Sollten beim Abrufen des Images Probleme auftreten, kontaktieren Sie uns bitte unter community@zilliz.com mit detaillierten Angaben zum Problem, und wir werden Ihnen die erforderliche Unterstützung zukommen lassen.
Milvus-Helm-Chart installieren
Bevor Sie die Milvus-Helm-Charts installieren, müssen Sie das Milvus-Helm-Repository hinzufügen.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
Das Milvus-Helm-Charts-Repository unter https://github.com/milvus-io/milvus-helm wurde archiviert. Wir verwenden nun das neue Repository unter https://github.com/zilliztech/milvus-helm. Das archivierte Repository ist weiterhin für Charts bis zur Version 4.0.31 verfügbar, für spätere Versionen sollten Sie jedoch das neue Repository verwenden.
Laden Sie anschließend die Milvus-Charts wie folgt aus dem Repository herunter:
$ helm repo update
Sie können diesen Befehl jederzeit ausführen, um die neuesten Milvus-Helm-Charts abzurufen.
Online-Installation
1. Einen Milvus-Cluster bereitstellen
Sobald Sie das Helm-Chart installiert haben, können Sie Milvus auf Kubernetes starten. Dieser Abschnitt führt Sie durch die Bereitstellung eines Milvus-Clusters.
Benötigen Sie stattdessen eine eigenständige Bereitstellung?
Wenn Sie Milvus für Entwicklungs- oder Testzwecke lieber im Standalone-Modus (einzelner Knoten) bereitstellen möchten, verwenden Sie diesen Befehl:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.3 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true
Hinweis: Im Standalone-Modus wird Woodpecker standardmäßig als Nachrichtenwarteschlange verwendet und die Streaming-Node-Komponente aktiviert. Bei Standalone-Bereitstellungen wird Woodpecker in den Milvus-Pod eingebettet; der dedizierte Woodpecker -Dienst (separate Pods) wird nur für verteilte/Cluster -Bereitstellungen verwendet. Weitere Informationen finden Sie unter „Architekturübersicht“ und „Woodpecker“.
Milvus-Cluster bereitstellen:
Für den Woodpecker-Dienstmodus empfehlen wir die Verwendung von Milvus 3.0.3 oder höher in Kombination mit Woodpecker v0.1.46 oder höher.
Der folgende Befehl stellt einen Milvus-Cluster mit optimierten Einstellungen für v3.0.3 bereit und verwendet Woodpecker als empfohlene Nachrichtenwarteschlange:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.3 \
--set woodpecker.enabled=true \
--set woodpecker.image.tag=v0.1.46 \
--set streaming.enabled=true \
--set streaming.woodpecker.embedded=false \
--set indexNode.enabled=false
Funktionsweise dieses Befehls:
- Verwendet Woodpecker als Nachrichtenwarteschlange (empfohlen für geringeren Wartungsaufwand)
- Führt Woodpecker als dedizierten Dienst (ein separates StatefulSet) aus, der nicht in den Streaming-Knoten eingebettet ist
- Aktiviert die neue Streaming-Node -Komponente für eine verbesserte Leistung
- Deaktiviert den veralteten Index-Knoten (die Funktionalität wird nun vom Datenknoten übernommen)
Architekturänderungen in Milvus 2.6.x:
- Nachrichtenwarteschlange: Woodpecker wird nun empfohlen (reduziert den Wartungsaufwand für die Infrastruktur im Vergleich zu Pulsar)
- Neue Komponente: Der Streaming-Knoten wird eingeführt und ist standardmäßig aktiviert
- Zusammengeführte Komponenten: „Index Node“ und „Data Node“ werden zu einem einzigen „Data Node“ zusammengefasst
Ausführliche Informationen zur Architektur finden Sie in der Architekturübersicht.
Alternative Nachrichtenwarteschlangen: Informationen zur Bereitstellung mit Pulsar, Kafka oder RocksMQ anstelle von Woodpecker finden Sie unter „Optionale Abhängigkeiten“.
Nächste Schritte: Der obige Befehl stellt Milvus mit den empfohlenen Konfigurationen bereit. Für den Produktiveinsatz:
- Verwenden Sie das Milvus-Dimensionierungstool, um die Einstellungen basierend auf Ihrer Datenmenge zu optimieren
- Lesen Sie die „Milvus-Checkliste für Systemkonfigurationen“, um erweiterte Konfigurationsoptionen zu erfahren
Wichtige Hinweise:
- Benennung der Releases: Verwenden Sie ausschließlich Buchstaben, Zahlen und Bindestriche (keine Punkte).
Weitere Informationen finden Sie im Milvus-Helm-Chart und in der Helm-Dokumentation.
2. Überprüfen Sie den Status des Milvus-Clusters
Überprüfen Sie, ob Ihre Bereitstellung erfolgreich war, indem Sie den Pod-Status überprüfen:
kubectl get pods
Warten Sie, bis alle Pods den Status „Running“ anzeigen. Bei der Konfiguration v3.0.3 sollten Sie Pods sehen, die in etwa wie folgt aussehen:
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-streamingnode-7b8cfc769c-mqmsm 1/1 Running 0 3m24s
my-release-milvus-woodpecker-0 1/1 Running 0 3m24s
my-release-milvus-woodpecker-1 1/1 Running 0 3m24s
my-release-milvus-woodpecker-2 1/1 Running 0 3m24s
my-release-milvus-woodpecker-3 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
Wichtige zu überprüfende Komponenten:
- Milvus-Komponenten:
mixcoord,datanode,querynode,proxy,streamingnode - Abhängigkeiten:
etcd(Metadaten),minio(Objektspeicher),woodpecker(Nachrichtenwarteschlange)
Mit streaming.woodpecker.embedded=false läuft Woodpecker als dediziertes StatefulSet (my-release-milvus-woodpecker, standardmäßig 4 Replikate – ein Quorum von 3 Knoten plus einem Reserveknoten zur Fehlertoleranz; woodpecker.replicaCount nicht auf einen Wert unter 3 setzen) und wird von einem Headless-Dienst gesteuert, der MinIO als Speicher-Backend nutzt – der Cluster verfügt also über einen separaten woodpecker -Pod-Satz, der vom Streaming-Knoten getrennt ist.
Sie können auch auf die Milvus-WebUI unter http://127.0.0.1:9091/webui/ zugreifen, sobald die Portweiterleitung eingerichtet ist (siehe nächster Schritt). Weitere Informationen finden Sie unter Milvus-WebUI.
3. Verbindung zu Milvus herstellen
Um von außerhalb von Kubernetes eine Verbindung zu Ihrem Milvus-Cluster herzustellen, müssen Sie eine Portweiterleitung einrichten.
Portweiterleitung einrichten:
kubectl port-forward service/my-release-milvus 27017:19530
Dieser Befehl leitet Ihren lokalen Port 27017 an den Milvus-Port 19530 weiter. Sie sollten Folgendes sehen:
Forwarding from 127.0.0.1:27017 -> 19530
Verbindungsdetails:
- Lokale Verbindung:
localhost:27017 - Milvus-Standardport:
19530
Optionen für die Portweiterleitung:
- Lokalen Port automatisch zuweisen: Verwenden Sie
:19530anstelle von27017:19530, damit kubectl einen verfügbaren Port auswählt - Auf allen Schnittstellen lauschen: Fügen Sie
--address 0.0.0.0hinzu, um Verbindungen von anderen Rechnern zuzulassen:kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530 - Standalone-Bereitstellung: Bei Verwendung des Standalone-Modus bleibt der Dienstname unverändert
Lassen Sie dieses Terminal während der Nutzung von Milvusgeöffnet. Sie können nun über localhost:27017 mit einem beliebigen Milvus-SDK eine Verbindung zu Milvus herstellen.
(Optional) Milvus-Konfigurationen aktualisieren
Sie können die Konfigurationen Ihres Milvus-Clusters aktualisieren, indem Sie die Datei „ values.yaml “ bearbeiten und erneut anwenden.
Erstellen Sie eine Datei „
values.yaml“ mit den gewünschten Konfigurationen.Im Folgenden wird davon ausgegangen, dass Sie „
proxy.http“ aktivieren möchten.extraConfigFiles: user.yaml: |+ proxy: http: enabled: trueInformationen zu den entsprechenden Konfigurationselementen finden Sie unter „Systemkonfiguration“.
Wenden Sie die Datei „
values.yaml“ an.
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
Überprüfen Sie die aktualisierten Konfigurationen.
helm get values my-releaseDie Ausgabe sollte die aktualisierten Konfigurationen anzeigen.
Auf Milvus WebUI zugreifen
Milvus wird mit einem integrierten GUI-Tool namens „Milvus WebUI“ ausgeliefert, auf das Sie über Ihren Browser zugreifen können. Die Milvus WebUI verbessert die Beobachtbarkeit des Systems durch eine einfache und intuitive Benutzeroberfläche. Mit der Milvus WebUI können Sie die Statistiken und Metriken der Komponenten und Abhängigkeiten von Milvus beobachten, Details zu Datenbanken und Sammlungen überprüfen sowie detaillierte Milvus-Konfigurationen auflisten. Weitere Informationen zur Milvus-Web-UI finden Sie unter Milvus-Web-UI
Um den Zugriff auf die Milvus-Web-UI zu ermöglichen, müssen Sie eine Portweiterleitung vom Proxy-Pod auf einen lokalen Port einrichten.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Nun können Sie über http://localhost:27018 auf die Milvus-Web-UI zugreifen.
Offline-Installation
Wenn Sie sich in einer Umgebung mit Netzwerkbeschränkungen befinden, befolgen Sie die in diesem Abschnitt beschriebenen Schritte, um einen Milvus-Cluster zu starten.
1. Milvus-Manifest abrufen
Führen Sie den folgenden Befehl aus, um das Milvus-Manifest abzurufen.
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
Der obige Befehl generiert Chart-Vorlagen für einen Milvus-Cluster und speichert die Ausgabe in einer Manifestdatei namens „ milvus_manifest.yaml “. Mit diesem Manifest können Sie einen Milvus-Cluster installieren, dessen Komponenten und Abhängigkeiten in separaten Pods untergebracht sind.
- Um eine Milvus-Instanz im Standalone-Modus zu installieren, bei dem alle Milvus-Komponenten in einem einzigen Pod enthalten sind, sollten Sie stattdessen den Befehl „
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false --set standalone.messageQueue=woodpecker --set woodpecker.enabled=true --set streaming.enabled=true zilliztech/milvus > milvus_manifest.yaml“ ausführen, um Chart-Vorlagen für eine Milvus-Instanz im Standalone-Modus zu generieren. - Um die Milvus-Konfigurationen zu ändern, laden Sie die
value.yamlVorlage herunter, tragen Sie Ihre gewünschten Einstellungen ein und verwenden Siehelm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml, um das Manifest entsprechend zu generieren.
2. Skript zum Herunterladen des Images
Das Skript zum Abrufen der Images wurde in Python entwickelt. Sie sollten das Skript zusammen mit seinen Abhängigkeiten aus der Datei „ requirement.txt “ herunterladen.
$ 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. Images abrufen und speichern
Führen Sie den folgenden Befehl aus, um die benötigten Images abzurufen und zu speichern.
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
Die Bilder werden in einen Unterordner namens „ images “ im aktuellen Verzeichnis heruntergeladen.
4. Bilder laden
Sie können die Bilder nun wie folgt auf die Hosts in der netzwerkbeschränkten Umgebung laden:
$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done
5. Milvus bereitstellen
$ kubectl apply -f milvus_manifest.yaml
Bis hierhin können Sie die Schritte 2 und 3 der Online-Installation befolgen, um den Clusterstatus zu überprüfen und einen lokalen Port an Milvus weiterzuleiten.
Laufenden Milvus-Cluster aktualisieren
Führen Sie den folgenden Befehl aus, um Ihren laufenden Milvus-Cluster auf die neueste Version zu aktualisieren:
$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values
Milvus deinstallieren
Führen Sie den folgenden Befehl aus, um Milvus zu deinstallieren.
$ helm uninstall my-release
Optionale Abhängigkeiten
Bei dieser Bereitstellung wird Woodpecker als Nachrichtenwarteschlange, etcd für Metadaten und MinIO für den Objektspeicher verwendet. Informationen zur Verwendung einer anderen Nachrichtenwarteschlange oder zur Anbindung eines externen Objektspeichers bzw. externer Metadaten finden Sie hier:
- Nachrichtenwarteschlange: Woodpecker (Standard) · Pulsar · Kafka · RocksMQ
- Objektspeicher: MinIO (Standard) · AWS S3 · Azure Blob · GCP Cloud Storage · Aliyun OSS · Tencent COS · Huawei OBS · S3-kompatibel
- Metadaten: etcd
Storage V3 ist standardmäßig deaktiviert. Aktivieren Sie es, bevor Sie Funktionen nutzen, die davon abhängen. Informationen zu Anforderungen und Kompatibilitätsaspekten finden Sie unter Storage V3.
Was kommt als Nächstes
Nachdem Sie Milvus in Docker installiert haben, können Sie:
Schauen Sie sich „Hello Milvus“ an, um zu sehen, was Milvus leisten kann.
Lernen Sie die grundlegenden Funktionen von Milvus kennen:
Stellen Sie Ihren Milvus-Cluster in der Cloud bereit:
Entdecken Sie Milvus WebUI, eine intuitive Weboberfläche für die Überwachung und Verwaltung von Milvus.
Entdecken Sie Milvus Backup, ein Open-Source-Tool für Milvus-Datensicherungen.
Entdecken Sie Birdwatcher, ein Open-Source-Tool zur Fehlerbehebung in Milvus und für dynamische Konfigurationsaktualisierungen.
Entdecken Sie Attu, ein Open-Source-GUI-Tool für die intuitive Verwaltung von Milvus.