Milvus in Kubernetes mit Helm starten

Diese Seite veranschaulicht, wie man eine Milvus-Instanz in Kubernetes mithilfe von Milvus Helm-Diagrammen startet.

Übersicht

Helm verwendet ein Paketierungsformat namens Charts. Ein Diagramm ist eine Sammlung von Dateien, die einen zusammenhängenden Satz von Kubernetes-Ressourcen beschreiben. Milvus bietet eine Reihe von Diagrammen, die Sie bei der Bereitstellung von Milvus-Abhängigkeiten und -Komponenten unterstützen.

Voraussetzungen

  • Installieren Sie Helm CLI.

  • Erstellen Sie einen K8s-Cluster.

  • 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 Software-Anforderungen.

  • Es wird empfohlen, vor der Installation von Milvus das Milvus Sizing Tool zu verwenden, um die Hardware-Anforderungen auf der Grundlage Ihrer Datengröße abzuschätzen. Dies hilft, eine optimale Leistung und Ressourcenzuweisung für Ihre Milvus-Installation zu gewährleisten.

Sollten Sie beim Ziehen des Images auf Probleme stoßen, wenden Sie sich bitte an community@zilliz.com und schildern Sie das Problem, damit wir Ihnen die notwendige Unterstützung bieten können.

Milvus Helm Chart installieren

Bevor Sie 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 jetzt das neue Repository unter https://github.com/zilliztech/milvus-helm. Das archivierte Repository ist immer noch für Diagramme bis 4.0.31 verfügbar, aber verwenden Sie das neue Repository für spätere Versionen.

Holen Sie dann Milvus-Diagramme wie folgt aus dem Repository:

$ helm repo update

Sie können diesen Befehl jederzeit ausführen, um die neuesten Milvus Helm-Diagramme abzurufen.

Online-Installation

1. Bereitstellen eines Milvus-Clusters

Sobald Sie das Helm-Diagramm 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 lieber im Standalone-Modus (einzelner Knoten) für die Entwicklung oder für Tests einsetzen möchten, verwenden Sie diesen Befehl:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.14 \
  --set cluster.enabled=false \
  --set pulsarv3.enabled=false \
  --set standalone.messageQueue=woodpecker \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true

Hinweis: Der Standalone-Modus verwendet Woodpecker als Standard-Nachrichtenwarteschlange und aktiviert die Komponente Streaming Node. Weitere Informationen finden Sie in der Architekturübersicht und unter Verwendung von Woodpecker.

Milvus-Cluster bereitstellen:

Mit dem folgenden Befehl wird ein Milvus-Cluster mit optimierten Einstellungen für v2.6.14 bereitgestellt, wobei Woodpecker als empfohlene Nachrichtenwarteschlange verwendet wird:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.14 \
  --set pulsarv3.enabled=false \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

Was dieser Befehl bewirkt:

  • Verwendet Woodpecker als Nachrichtenwarteschlange (empfohlen für geringeren Wartungsaufwand)
  • Aktiviert die neue Komponente Streaming Node für eine verbesserte Leistung
  • Deaktiviert den alten Index-Knoten (die Funktionalität wird jetzt von Data Node übernommen)
  • Deaktiviert Pulsar und verwendet stattdessen Woodpecker

Änderungen der Architektur in Milvus 2.6.x:

  • Nachrichten-Warteschlange: Woodpecker wird jetzt empfohlen (reduziert die Wartung der Infrastruktur im Vergleich zu Pulsar)
  • Neue Komponente: Streaming Node wurde eingeführt und ist standardmäßig aktiviert
  • Verschmolzene Komponenten: Indexknoten und Datenknoten werden zu einem einzigen Datenknoten zusammengefasst

Vollständige Details zur Architektur finden Sie in der Architekturübersicht.

Alternative Nachrichtenwarteschlangen-Optionen:

Wenn Sie anstelle von Woodpecker lieber Pulsar (die traditionelle Wahl) verwenden möchten:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.14 \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

Nächste Schritte:Der obige Befehl setzt Milvus mit den empfohlenen Konfigurationen ein. Für den produktiven Einsatz:

Wichtige Hinweise:

  • Benennung von Versionen: Verwenden Sie nur Buchstaben, Zahlen und Bindestriche (keine Punkte erlaubt)
  • Kubernetes v1.25+: Wenn Sie Probleme mit PodDisruptionBudget haben, verwenden Sie diesen Workaround:
    helm install my-release zilliztech/milvus \
      --set pulsar.bookkeeper.pdb.usePolicy=false \
      --set pulsar.broker.pdb.usePolicy=false \
      --set pulsar.proxy.pdb.usePolicy=false \
      --set pulsar.zookeeper.pdb.usePolicy=false
    

Weitere Informationen finden Sie im Milvus Helm Chart und in der Helm-Dokumentation.

2. Prüfen Sie den Status des Milvus-Clusters

Überprüfen Sie den Pod-Status, um sicherzugehen, dass Ihr Einsatz erfolgreich war:

kubectl get pods

Warten Sie, bis alle Pods den Status "Running" anzeigen. Bei der Konfiguration v2.6.14 sollten Sie Pods ähnlich wie folgt sehen:

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-streaming-node-xxxxxxxxx       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

Zu überprüfende Schlüsselkomponenten:

  • Milvus-Komponenten: mixcoord, datanode, querynode, proxy, streaming-node
  • Abhängigkeiten: etcd (Metadaten), minio (Objektspeicher), pulsar (Nachrichtenwarteschlange)

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). Einzelheiten finden Sie unter Milvus WebUI.

3. Mit Milvus verbinden

Um eine Verbindung zu Ihrem Milvus-Cluster von außerhalb von Kubernetes 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 sehen:

Forwarding from 127.0.0.1:27017 -> 19530

Verbindungsdetails:

  • Lokale Verbindung: localhost:27017
  • Milvus-Standardanschluss: 19530

Optionen für die Portweiterleitung:

  • Lokalen Port automatisch zuweisen: Verwenden Sie :19530 anstelle von 27017:19530, um kubectl einen verfügbaren Port wählen zu lassen
  • Auf allen Schnittstellen lauschen: Fügen Sie --address 0.0.0.0 hinzu, um Verbindungen von anderen Rechnern zuzulassen:
    kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
    
  • Eigenständiger Einsatz: Wenn Sie den Standalone-Modus verwenden, bleibt der Name des Dienstes derselbe

Lassen Sie dieses Terminal während der Verwendung von Milvusgeöffnet. Sie können sich nun mit jedem Milvus SDK unter localhost:27017 mit Milvus verbinden.

(Optional) Milvus-Konfigurationen aktualisieren

Sie können die Konfigurationen Ihres Milvus-Clusters aktualisieren, indem Sie die Datei values.yaml bearbeiten und erneut anwenden.

  1. Erstellen Sie eine values.yaml Datei mit den gewünschten Konfigurationen.

    Im Folgenden wird davon ausgegangen, dass Sie proxy.http aktivieren möchten.

    extraConfigFiles:
      user.yaml: |+
        proxy:
          http:
            enabled: true
    

    Die zutreffenden Konfigurationselemente finden Sie unter Systemkonfiguration.

  2. Wenden Sie die Datei values.yaml an.

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. Überprüfen Sie die aktualisierten Konfigurationen.

    helm get values my-release
    

    Die Ausgabe sollte die aktualisierten Konfigurationen anzeigen.

Zugriff auf Milvus WebUI

Milvus wird mit einem integrierten GUI-Tool namens Milvus WebUI geliefert, auf das Sie über Ihren Browser zugreifen können. Milvus Web UI verbessert die Beobachtbarkeit des Systems durch eine einfache und intuitive Schnittstelle. Sie können Milvus Web UI verwenden, um die Statistiken und Metriken der Komponenten und Abhängigkeiten von Milvus zu beobachten, Datenbank- und Sammlungsdetails zu überprüfen und detaillierte Milvus-Konfigurationen aufzulisten. Für Details über Milvus Web UI, siehe Milvus WebUI

Um den Zugriff auf die Milvus Web UI zu ermöglichen, müssen Sie den Proxy-Pod auf einen lokalen Port weiterleiten.

$ 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 auf die Milvus Web UI unter http://localhost:27018 zugreifen.

Offline-Installation

Wenn Sie sich in einer Umgebung mit Netzwerkbeschränkungen befinden, befolgen Sie das Verfahren in diesem Abschnitt, 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 rendert Diagrammvorlagen 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 mit seinen Komponenten und Abhängigkeiten in separaten Pods installieren.

  • Um eine Milvus-Instanz im Standalone-Modus zu installieren, bei dem alle Milvus-Komponenten in einem einzigen Pod enthalten sind, sollten Sie stattdessen helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yaml ausführen, um Diagrammvorlagen für eine Milvus-Instanz im Standalone-Modus zu rendern.
  • Um Milvus-Konfigurationen zu ändern, laden Sie die value.yaml Vorlage herunter, fügen Sie die gewünschten Einstellungen hinzu, und verwenden Sie helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml, um das Manifest entsprechend zu rendern.

2. Download des Image-Pulling-Skripts

Das Image-Pulling-Skript ist in Python entwickelt. Sie sollten das Skript zusammen mit seinen Abhängigkeiten in 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. Bilder abrufen und speichern

Führen Sie den folgenden Befehl aus, um die benötigten Bilder zu laden und zu speichern.

$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml

Die Bilder werden in einem Unterordner namens images im aktuellen Verzeichnis gespeichert.

4. Bilder laden

Sie können nun die Bilder wie folgt auf die Hosts in der netzbeschrä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 zu diesem Zeitpunkt können Sie die Schritte 2 und 3 der Online-Installation ausführen, um den Cluster-Status zu überprüfen und einen lokalen Port an Milvus weiterzuleiten.

Upgrade des laufenden Milvus-Clusters

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

Wie geht es weiter?

Nachdem Sie Milvus in Docker installiert haben, können Sie: