Bereitstellen eines Milvus-Clusters auf GKE
Milvus ist eine Cloud-native Vektordatenbank und kann in verschiedenen Cloud-Umgebungen eingesetzt werden. Dieser Leitfaden führt Sie durch alle Details zur Einrichtung von Milvus auf der Google Cloud Platform (GCP).
Bereitstellen eines Milvus-Clusters auf GCP
Bevor Sie beginnen
Um Milvus auf GCP bereitzustellen, müssen Sie sicherstellen, dass
In Ihrem GCP-Konto ist bereits ein Projekt vorhanden.
Wie Sie ein Projekt erstellen können, erfahren Sie unter Erstellen und Verwalten von Projekten. Der Name des in dieser Anleitung verwendeten Projekts ist milvus-testing-nonprod.
Sie haben gcloud CLI, kubectl und Helm lokal installiert oder sich entschieden, stattdessen die browserbasierte Cloud Shell zu verwenden.
Sie haben die gcloud CLI mit Ihren GCP-Kontoanmeldeinformationen initialisiert.
Einrichten des Netzwerks
Um die Sicherheit von Milvus zu gewährleisten, müssen Sie ein logisch isoliertes virtuelles Netzwerk in Ihrem GCP-Projekt erstellen. Der folgende Befehl erstellt eine VPC.
gcloud compute networks create milvus-network \
--project=milvus-testing-nonprod \
--subnet-mode=auto \
--mtu=1460 \
--bgp-routing-mode=regional
Um Ihnen die Arbeit zu erleichtern, müssen Sie außerdem mehrere Firewall-Regeln einrichten, um externen Datenverkehr über ICMP, RDP und SSH sowie den Datenverkehr innerhalb der VPC zuzulassen.
gcloud compute firewall-rules create milvus-network-allow-icmp \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows ICMP connections from any source to any instance on the network." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=icmp
gcloud compute firewall-rules create milvus-network-allow-internal \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows connections from any source in the network IP range to any instance on the network using all protocols." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=10.128.0.0/9 \
--action=ALLOW --rules=all
gcloud compute firewall-rules create milvus-network-allow-rdp \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows RDP connections from any source to any instance on the network using port 3389." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=tcp:3389
gcloud compute firewall-rules create milvus-network-allow-ssh \
--project=milvus-testing-nonprod \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--description="Allows TCP connections from any source to any instance on the network using port 22." \
--direction=INGRESS \
--priority=65534 \
--source-ranges=0.0.0.0/0 \
--action=ALLOW \
--rules=tcp:22
Schließlich müssen Sie den eingehenden Verkehr zur Milvus-Instanz, die wir später erstellen werden, an Port 19530 zulassen.
gcloud compute firewall-rules create allow-milvus-in \
--project=milvus-testing-nonprod \
--description="Allow ingress traffic for Milvus on port 19530" \
--direction=INGRESS \
--priority=1000 \
--network=projects/milvus-testing-nonprod/global/networks/milvus-network \
--action=ALLOW \
--rules=tcp:19530 \
--source-ranges=0.0.0.0/0
Bereitstellung eines Kubernetes-Clusters
In dieser Anleitung verwenden wir den Dienst Google Kubernetes Engine (GKE) zur Bereitstellung eines Kubernetes-Clusters mit zwei Knoten in der Zone us-west1-a. Jeder Knoten ist eine virtuelle Maschine der e2-standard-4 Compute Engine, auf der das COS_CONTAINERD-Image ausgeführt wird.
Es wird empfohlen, die Maschinentypen zu verwenden, die einen Mindestspeicher von 16 GB bieten, um die Stabilität des Dienstes zu gewährleisten.
gcloud container clusters create "milvus-cluster-1" \
--project "milvus-testing-nonprod" \
--zone "us-west1-a" \
--workload-pool "milvus-testing-nonprod.svc.id.goog" \
--no-enable-basic-auth \
--cluster-version "1.28.10-gke.1075001" \
--release-channel "regular" \
--machine-type "c2-standard-4" \
--image-type "COS_CONTAINERD" \
--disk-type "pd-standard" \
--disk-size "100" \
--max-pods-per-node "110" \
--num-nodes "3" \
--enable-ip-alias \
--network "projects/milvus-testing-nonprod/global/networks/milvus-network" \
--subnetwork "projects/milvus-testing-nonprod/regions/us-west1/subnetworks/milvus-network"
Es dauert ein paar Minuten, bis der Kubernetes-Cluster hochgefahren ist. Sobald der Cluster bereit ist, verwenden Sie den folgenden Befehl, um seine Anmeldeinformationen abzurufen, so dass Sie kubectl
Befehle in Ihrem Terminal ausführen können, um mit dem Cluster aus der Ferne zu kommunizieren.
gcloud container clusters get-credentials milvus-cluster-1 --zone "us-west1-a"
Verwenden Sie Google Cloud Storage (GCS) als externen Objektspeicher
- Erstellen Sie einen Bucket.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- Generieren Sie User Access Key und Secret Key, gehen Sie auf die Storage-Seite Ihres Projekts. Klicken Sie in der linken Seitenleiste des Dashboards auf Google Cloud Storage und dann auf Einstellungen. Wählen Sie die Registerkarte INTEROPERABILITÄT. Wenn Sie diese nicht bereits aktiviert haben, klicken Sie auf Interoperabler Zugriff. Klicken Sie dann auf die Schaltfläche CREATE A KEY, um einen Schlüssel zu erstellen.
GCP-Zugangsschlüssel für Ihr Nutzerkonto
- values.yaml hinzufügen
cluster:
enabled: true
service:
type: LoadBalancer
minio:
enabled: false
externalS3:
enabled: true
host: storage.googleapis.com
port: 443
rootPath: milvus/my-release
bucketName: milvus-testing-nonprod
cloudProvider: gcp
useSSL: true
accessKey: "<access-key>"
secretKey: "<secret-key>"
Milvus bereitstellen
Jetzt ist der Kubernetes-Cluster bereit. Lassen Sie uns jetzt Milvus bereitstellen.
helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
helm install -f values.yaml my-release milvus/milvus
In den vorangegangenen Befehlen fügen wir das Repo der Milvus-Helm-Charts lokal hinzu und aktualisieren das Repo, um die neuesten Charts abzurufen. Dann installieren wir eine Milvus-Instanz und nennen sie my-release.
Beachten Sie den Wert von config service.type
, der angibt, dass wir die Milvus-Instanz über einen Layer-4-Loadbalancer bereitstellen möchten.
Wenn Sie Ihre Milvus-Instanz über einen Layer-7-Load-Balancer bereitstellen möchten, lesen Sie dies.
Überprüfen Sie den Einsatz
Sobald alle Pods laufen, führen Sie den folgenden Befehl aus, um die externe IP-Adresse zu ermitteln.
kubectl get services|grep my-release-milvus|grep LoadBalancer|awk '{print $4}'
Hallo Milvus
Bitte lesen Sie Hello Milvus, ändern Sie den Host-Wert in die externe IP-Adresse und führen Sie dann den Code aus.
Wie geht's weiter?
Wenn Sie erfahren möchten, wie Sie Milvus in anderen Clouds einsetzen können: