Milvus in Kubernetes mit dem Milvus Operator ausführen
Auf dieser Seite wird erläutert, wie Sie mithilfe des Milvus Operators eine Milvus-Instanz in Kubernetes starten.
Übersicht
Der Milvus Operator ist eine Lösung, die Ihnen dabei hilft, einen vollständigen Milvus-Service-Stack auf Kubernetes-Clustern (K8s) bereitzustellen und zu verwalten. Der Stack umfasst alle Milvus-Komponenten und relevante Abhängigkeiten wie etcd und MinIO, wobei Woodpecker als integrierte Nachrichtenwarteschlange dient.
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 Herunterladen des Images Probleme auftreten, kontaktieren Sie uns bitte unter community@zilliz.com mit Details zum Problem, und wir werden Ihnen die erforderliche Unterstützung zukommen lassen.
Installieren Sie den Milvus Operator
Der Milvus Operator definiert benutzerdefinierte Ressourcen für einen Milvus-Cluster auf Basis der Kubernetes Custom Resources. Wenn benutzerdefinierte Ressourcen definiert sind, können Sie die K8s-APIs deklarativ nutzen und den Milvus-Deployment-Stack verwalten, um dessen Skalierbarkeit und Hochverfügbarkeit sicherzustellen.
Führen Sie den folgenden Befehl aus, um den Milvus Operator mit Helm zu installieren.
$ helm install milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
Nach Abschluss des Installationsvorgangs wird eine Ausgabe angezeigt, die der folgenden ähnelt.
NAME: milvus-operator
LAST DEPLOYED: Thu Jul 7 13:18:40 2022
NAMESPACE: milvus-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Milvus Operator Is Starting, use `kubectl get -n milvus-operator deploy/milvus-operator` to check if its successfully installed
If Operator not started successfully, check the checker's log with `kubectl -n milvus-operator logs job/milvus-operator-checker`
Full Installation doc can be found in https://github.com/zilliztech/milvus-operator/blob/main/docs/installation/installation.md
Quick start with `kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_minimum.yaml`
More samples can be found in https://github.com/zilliztech/milvus-operator/tree/main/config/samples
CRD Documentation can be found in https://github.com/zilliztech/milvus-operator/tree/main/docs/CRD
Falls Sie den Milvus Operator bereits installiert haben, führen Sie mit dem folgenden Befehl ein Upgrade durch:
helm upgrade milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
Führen Sie den folgenden Befehl aus, um den Milvus Operator mit „ kubectl “ zu installieren.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Nach Abschluss des Installationsvorgangs wird eine Ausgabe angezeigt, die in etwa wie folgt aussieht.
namespace/milvus-operator created
customresourcedefinition.apiextensions.k8s.io/milvusclusters.milvus.io created
serviceaccount/milvus-operator-controller-manager created
role.rbac.authorization.k8s.io/milvus-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/milvus-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/milvus-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-proxy-rolebinding created
configmap/milvus-operator-manager-config created
service/milvus-operator-controller-manager-metrics-service created
service/milvus-operator-webhook-service created
deployment.apps/milvus-operator-controller-manager created
Sie können wie folgt überprüfen, ob der Milvus Operator-Pod läuft:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
Milvus bereitstellen
1. Einen Milvus-Cluster bereitstellen
Sobald der Milvus-Operator-Pod läuft, können Sie wie folgt einen Milvus-Cluster bereitstellen.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_woodpecker.yaml
Der obige Befehl stellt einen Milvus-Cluster bereit, der Woodpecker als Nachrichtenwarteschlange (empfohlen für v3.0.2) sowie alle neuen Architekturkomponenten einschließlich des Streaming-Knotens verwendet.
Architektur-Highlights dieser Bereitstellung:
- Nachrichtenwarteschlange: Verwendet Woodpecker (reduziert den Wartungsaufwand für die Infrastruktur)
- Streaming-Knoten: Aktiviert für eine verbesserte Datenverarbeitung
- Mix-Koordinator: Konsolidierte Koordinatorkomponenten für verbesserte Effizienz
Um diese Einstellungen anzupassen, empfehlen wir Ihnen, das Milvus Sizing Tool zu verwenden, um die Konfigurationen basierend auf Ihrer tatsächlichen Datenmenge anzupassen und anschließend die entsprechende YAML-Datei herunterzuladen. Weitere Informationen zu den Konfigurationsparametern finden Sie in der Milvus-Checkliste für Systemkonfigurationen.
- Der Release-Name darf nur Buchstaben, Zahlen und Bindestriche enthalten. Punkte sind im Release-Namen nicht zulässig.
- Sie können eine Milvus-Instanz auch im Standalone-Modus bereitstellen, bei dem alle Komponenten in einem einzigen Pod enthalten sind. Ändern Sie dazu die URL der Konfigurationsdatei im obigen Befehl wie folgt:
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. Überprüfen Sie den Status des Milvus-Clusters
Führen Sie den folgenden Befehl aus, um den Status des Milvus-Clusters zu überprüfen
$ kubectl get milvus my-release -o yaml
Sobald Ihr Milvus-Cluster bereit ist, sollte die Ausgabe des obigen Befehls in etwa wie folgt aussehen. Wenn das Feld „ status.status “ weiterhin den Wert „ Unhealthy “ anzeigt, befindet sich Ihr Milvus-Cluster noch im Aufbau.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
conditions:
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
reason: StorageReady
status: "True"
type: StorageReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: Etcd endpoints is healthy
reason: EtcdReady
status: "True"
type: EtcdReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: All Milvus components are healthy
reason: MilvusClusterHealthy
status: "True"
type: MilvusReady
endpoint: my-release-milvus.default:19530
status: Healthy
Der Milvus-Operator erstellt zunächst die Milvus-Abhängigkeiten wie etcd und MinIO und anschließend die Milvus-Komponenten wie Proxy, Koordinatoren und Knoten.
Sobald Ihr Milvus-Cluster bereit ist, sollte der Status aller Pods im Milvus-Cluster in etwa wie folgt aussehen.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m36s
my-release-etcd-1 1/1 Running 0 2m36s
my-release-etcd-2 1/1 Running 0 2m36s
my-release-milvus-datanode-58955c65b9-j4j7s 1/1 Running 0 92s
my-release-milvus-mixcoord-686f84968f-jcv5d 1/1 Running 0 92s
my-release-milvus-proxy-646f48fc7c-4lctb 1/1 Running 0 92s
my-release-milvus-querynode-0-d89d7677b-x7j7q 1/1 Running 0 91s
my-release-milvus-streamingnode-556bdcc87c-2qwcc 1/1 Running 0 92s
my-release-minio-0 1/1 Running 0 2m36s
my-release-minio-1 1/1 Running 0 2m36s
my-release-minio-2 1/1 Running 0 2m35s
my-release-minio-3 1/1 Running 0 2m35s
3. Leiten Sie einen lokalen Port an Milvus weiter
Führen Sie den folgenden Befehl aus, um den Port zu ermitteln, unter dem Ihr Milvus-Cluster erreichbar ist.
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
Die Ausgabe zeigt, dass die Milvus-Instanz am Standardport 19530 erreichbar ist.
Wenn Sie Milvus im Standalone-Modus bereitgestellt haben, ändern Sie den Pod-Namen von „ my-release-milvus-proxy-xxxxxxxxxx-xxxxx “ in „ my-release-milvus-xxxxxxxxxx-xxxxx “.
Führen Sie anschließend den folgenden Befehl aus, um einen lokalen Port auf den Port weiterzuleiten, unter dem Milvus erreichbar ist.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Optional können Sie im obigen Befehl „ :19530 “ anstelle von „ 27017:19530 “ verwenden, damit „ kubectl “ einen lokalen Port für Sie zuweist und Sie sich nicht um Portkonflikte kümmern müssen.
Standardmäßig lauscht die Portweiterleitung von `kubectl` nur auf localhost. Verwenden Sie das Flag address, wenn Milvus auf die ausgewählte oder alle IP-Adressen lauschen soll. Der folgende Befehl sorgt dafür, dass die Portweiterleitung auf allen IP-Adressen des Host-Rechners lauscht.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Nun können Sie über den weitergeleiteten Port eine Verbindung zu Milvus herstellen.
(Optional) Milvus-Konfigurationen aktualisieren
Sie können die Konfigurationen Ihres Milvus-Clusters anzeigen und aktualisieren, indem Sie den Befehl „ patch “ wie folgt aufrufen:
Führen Sie den folgenden Befehl aus, um eine Vorschau der geplanten Konfigurationen anzuzeigen.
Im Folgenden wird davon ausgegangen, dass Sie den Parameter „
spec.components.disableMetric“ auf „false“ ms aktualisieren möchten.$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}' \ --dry-run=client -o yamlInformationen zu den entsprechenden Konfigurationselementen finden Sie unter „Systemkonfiguration“.
Aktualisieren Sie die Konfigurationen.
$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}'
Auf die 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 Systemüberwachung 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 überwachen, Datenbank- und Erfassungsdetails ü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-WebUI 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.
Milvus deinstallieren
Führen Sie den folgenden Befehl aus, um den Milvus-Cluster zu deinstallieren.
$ kubectl delete milvus my-release
- Wenn Sie den Milvus-Cluster mit der Standardkonfiguration löschen, werden Abhängigkeiten wie etcd und MinIO nicht gelöscht. Daher werden diese Abhängigkeiten bei der nächsten Installation derselben Milvus-Cluster-Instanz erneut verwendet.
- Informationen zum Löschen der Abhängigkeiten und der Persistent Volume Claims (PVCs) zusammen mit dem Milvus-Cluster finden Sie in der Konfigurationsdatei.
Milvus Operator deinstallieren
Es gibt zwei Möglichkeiten, den Milvus Operator zu deinstallieren.
Deinstallation mit Helm
$ helm -n milvus-operator uninstall milvus-operator
Deinstallation mit kubectl
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml
Optionale Abhängigkeiten
Dieser Deployment verwendet Woodpecker als Nachrichtenwarteschlange, etcd für Metadaten und MinIO für den Objektspeicher, die alle vom Milvus Operator bereitgestellt werden. Informationen zur Verwendung eines anderen Backends mit dem Operator finden Sie hier:
- Nachrichtenwarteschlange: Woodpecker (Standard) · Pulsar · Kafka · RocksMQ
- Objektspeicher: Konfigurieren Sie den Objektspeicher mit dem Milvus Operator
- Metadaten: Konfigurieren Sie etcd mit dem Milvus Operator
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 folgenden Clouds 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 für die Fehlerbehebung in Milvus und dynamische Konfigurationsaktualisierungen.
Entdecken Sie Attu, ein Open-Source-GUI-Tool für die intuitive Verwaltung von Milvus.