Despliegue de un clúster de Milvus en GKE
Milvus es una base de datos vectorial nativa de la nube y puede desplegarse en varios entornos de nube. Esta guía le guiará a través de cada detalle sobre la configuración de Milvus en Google Cloud Platform (GCP).
Despliegue de un clúster Milvus en GCP
Antes de empezar
Para desplegar Milvus en GCP, asegúrese de que
Ya existe un proyecto en su cuenta GCP.
Para crear un proyecto, consulte Creación y gestión de proyectos. El nombre del proyecto utilizado en esta guía es milvus-testing-nonprod.
Ha instalado localmente gcloud CLI, kubectl y Helm, o ha decidido utilizar en su lugar Cloud Shell basado en navegador.
Ha inicializado gcloud CLI con las credenciales de su cuenta GCP.
Configurar la red
Para garantizar la seguridad de Milvus, necesita crear una red virtual lógicamente aislada en su proyecto GCP. El siguiente comando crea una VPC.
gcloud compute networks create milvus-network \
--project=milvus-testing-nonprod \
--subnet-mode=auto \
--mtu=1460 \
--bgp-routing-mode=regional
Para facilitar su trabajo, también necesita configurar varias reglas de cortafuegos para permitir el tráfico externo a través de ICMP, RDP y SSH, así como el tráfico dentro de la VPC.
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
Por último, debe permitir el tráfico entrante a la instancia de Milvus que crearemos más adelante en el puerto 19530.
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
Aprovisionar un clúster Kubernetes
En esta guía, utilizaremos el servicio Google Kubernetes Engine (GKE) para aprovisionar un clúster Kubernetes con dos nodos en la zona us-west1-a. Cada nodo es una máquina virtual e2-standard-4 Compute Engine que ejecuta la imagen COS_CONTAINERD.
Se recomienda utilizar máquinas que ofrezcan una memoria mínima de 16 GB para garantizar la estabilidad del servicio.
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"
El clúster Kubernetes tardará un par de minutos en ponerse en marcha. Una vez que el clúster esté listo, utilice el siguiente comando para obtener sus credenciales de modo que pueda ejecutar comandos kubectl
en su terminal para comunicarse con el clúster de forma remota.
gcloud container clusters get-credentials milvus-cluster-1 --zone "us-west1-a"
Utilizar Google Cloud Storage (GCS) como almacenamiento de objetos externo
- Crear bucket.
gcloud storage buckets create gs://milvus-testing-nonprod --project=milvus-testing-nonprod --default-storage-class=STANDARD --location=us-west1 --uniform-bucket-level-access
- Genera la Clave de Acceso de Usuario y la Clave Secreta, debes ir a la página de almacenamiento de tu proyecto. En la barra lateral izquierda del panel de control, haz clic en Google Cloud Storage y luego en Configuración. Selecciona la pestaña INTEROPERABILIDAD. Si aún no la has habilitado, haz clic en Acceso interoperable. A continuación, haga clic en el botón CREAR UNA CLAVE para crear.
Claves de acceso a GCP para su cuenta de usuario
- Añada values.yaml
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>"
Despliegue de Milvus
Ahora el cluster Kubernetes está listo. Despleguemos Milvus ahora mismo.
helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
helm install -f values.yaml my-release milvus/milvus
En los comandos anteriores, añadimos el repositorio de gráficos de Milvus Helm localmente y actualizamos el repositorio para obtener los gráficos más recientes. Luego instalamos una instancia de Milvus y la llamamos my-release.
Observe el valor config service.type
, que indica que nos gustaría exponer la instancia Milvus a través de un equilibrador de carga Layer-4.
Si desea exponer su instancia Milvus a través de un equilibrador de carga de capa 7, lea esto.
Verifique el despliegue
Una vez que todos los pods estén funcionando, ejecute el siguiente comando para obtener la dirección IP externa.
kubectl get services|grep my-release-milvus|grep LoadBalancer|awk '{print $4}'
Hola Milvus
Consulte Hola Milvus, cambie el valor del host por la dirección IP externa y, a continuación, ejecute el código.
Lo que sigue
Si desea aprender cómo desplegar Milvus en otras nubes: