Ejecutar Milvus en Kubernetes con Milvus Operator
En esta página se explica cómo iniciar una instancia de Milvus en Kubernetes utilizando Milvus Operator.
Descripción general
Milvus Operator es una solución que te ayuda a implementar y gestionar una pila completa de servicios de Milvus para clústeres de Kubernetes (K8s). La pila incluye todos los componentes de Milvus y las dependencias pertinentes, como etcd, Pulsar y MinIO.
Requisitos previos
Instala una StorageClass. Puedes comprobar la StorageClass instalada de la siguiente manera.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseComprueba los requisitos de hardware y software antes de la instalación.
Antes de instalar Milvus, se recomienda utilizar la herramienta de dimensionamiento de Milvus para estimar los requisitos de hardware en función del tamaño de tus datos. Esto ayuda a garantizar un rendimiento óptimo y una asignación adecuada de recursos para tu instalación de Milvus.
Si tiene algún problema al descargar la imagen, póngase en contacto con nosotros en community@zilliz.com con los detalles del problema y le proporcionaremos la asistencia necesaria.
Instalar Milvus Operator
Milvus Operator define recursos personalizados del clúster de Milvus sobre la base de los recursos personalizados de Kubernetes. Una vez definidos los recursos personalizados, puede utilizar las API de K8s de forma declarativa y gestionar la pila de implementación de Milvus para garantizar su escalabilidad y alta disponibilidad.
Ejecuta el siguiente comando para instalar Milvus Operator con Helm.
$ 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
Verás un resultado similar al siguiente una vez finalizado el proceso de instalación.
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
Si ya has instalado Milvus Operator anteriormente, actualízalo con el siguiente comando:
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
Ejecuta el siguiente comando para instalar Milvus Operator con kubectl.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Una vez finalizado el proceso de instalación, verás un resultado similar al siguiente.
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
Puedes comprobar si el pod de Milvus Operator se está ejecutando de la siguiente manera:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
Implementar Milvus
1. Implementar un clúster de Milvus
Una vez que el pod de Milvus Operator esté en ejecución, puedes implementar un clúster de Milvus de la siguiente manera.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_woodpecker.yaml
El comando anterior implementa un clúster de Milvus con Woodpecker como cola de mensajes (recomendado para la versión v3.0-beta) y todos los nuevos componentes arquitectónicos, incluido el nodo de streaming.
Aspectos destacados de la arquitectura en esta implementación:
- Cola de mensajes: utiliza Woodpecker (reduce el mantenimiento de la infraestructura)
- Nodo de streaming: habilitado para un procesamiento de datos mejorado
- Coordinador Mix: componentes del coordinador consolidados para una mayor eficiencia
Para personalizar estos ajustes, te recomendamos que utilices la herramienta de dimensionamiento de Milvus para ajustar las configuraciones en función del tamaño real de tus datos y, a continuación, descargues el archivo YAML correspondiente. Para obtener más información sobre los parámetros de configuración, consulta la lista de comprobación de configuraciones del sistema Milvus.
- El nombre de la versión solo debe contener letras, números y guiones. No se permiten puntos en el nombre de la versión.
- También puede implementar una instancia de Milvus en modo autónomo, en el que todos sus componentes se encuentran dentro de un único pod. Para ello, cambie la URL del archivo de configuración en el comando anterior por
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. Comprueba el estado del clúster de Milvus
Ejecute el siguiente comando para comprobar el estado del clúster de Milvus
$ kubectl get milvus my-release -o yaml
Una vez que su clúster de Milvus esté listo, el resultado del comando anterior debería ser similar al siguiente. Si el campo « status.status » sigue indicando « Unhealthy », su clúster de Milvus aún se está creando.
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: Pulsar is ready
reason: PulsarReady
status: "True"
type: PulsarReady
- 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
Milvus Operator crea las dependencias de Milvus, como etcd, Pulsar y MinIO, y a continuación los componentes de Milvus, como el proxy, los coordinadores y los nodos.
Una vez que el clúster de Milvus esté listo, el estado de todos los pods del clúster de Milvus debería ser similar al siguiente.
$ 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. Redirigir un puerto local a Milvus
Ejecuta el siguiente comando para obtener el puerto en el que opera tu clúster de Milvus.
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
La salida muestra que la instancia de Milvus está disponible en el puerto predeterminado 19530.
Si ha desplegado Milvus en modo autónomo, cambie el nombre del pod de « my-release-milvus-proxy-xxxxxxxxxx-xxxxx » a « my-release-milvus-xxxxxxxxxx-xxxxx ».
A continuación, ejecuta el siguiente comando para reenviar un puerto local al puerto en el que opera Milvus.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Si lo prefieres, puedes utilizar :19530 en lugar de 27017:19530 en el comando anterior para que kubectl te asigne un puerto local y así no tengas que gestionar conflictos de puertos.
Por defecto, el reenvío de puertos de kubectl solo escucha en localhost. Utiliza el indicador address si quieres que Milvus escuche en la dirección IP seleccionada o en todas ellas. El siguiente comando hace que el reenvío de puertos escuche en todas las direcciones IP de la máquina host.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Ahora ya puedes conectarte a Milvus utilizando el puerto reenviado.
(Opcional) Actualizar las configuraciones de Milvus
Puedes ver y actualizar las configuraciones de tu clúster de Milvus ejecutando el comando ` patch ` de la siguiente manera:
Ejecuta el siguiente comando para obtener una vista previa de las configuraciones propuestas.
En el siguiente ejemplo se supone que desea actualizar el parámetro «
spec.components.disableMetric» a «false» ms.$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}' \ --dry-run=client -o yamlPara conocer los elementos de configuración aplicables, consulte «Configuración del sistema».
Actualice las configuraciones.
$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}'
Acceder a la interfaz web de Milvus
Milvus incluye una herramienta GUI integrada llamada Milvus WebUI a la que puede acceder a través de su navegador. Milvus WebUI mejora la observabilidad del sistema con una interfaz sencilla e intuitiva. Puede utilizar Milvus WebUI para observar las estadísticas y métricas de los componentes y dependencias de Milvus, comprobar los detalles de la base de datos y la recopilación de datos, y ver una lista detallada de las configuraciones de Milvus. Para obtener más información sobre Milvus WebUI, consulta Milvus WebUI
Para habilitar el acceso a Milvus WebUI, es necesario redirigir el puerto del pod del proxy a un puerto local.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Ahora puede acceder a la interfaz web de Milvus en http://localhost:27018.
Desinstalar Milvus
Ejecute el siguiente comando para desinstalar el clúster de Milvus.
$ kubectl delete milvus my-release
- Al eliminar el clúster de Milvus con la configuración predeterminada, no se eliminan las dependencias como etcd, Pulsar y MinIO. Por lo tanto, la próxima vez que instales la misma instancia del clúster de Milvus, estas dependencias se volverán a utilizar.
- Para eliminar las dependencias y las reclamaciones de volumen persistente (PVC) junto con el clúster de Milvus, consulta el archivo de configuración.
Desinstalar Milvus Operator
También hay dos formas de desinstalar Milvus Operator.
Desinstalar con Helm
$ helm -n milvus-operator uninstall milvus-operator
Desinstalar con kubectl
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml
Próximos pasos
Una vez instalado Milvus en Docker, puedes:
Echa un vistazo a «Hello Milvus » para ver de qué es capaz Milvus.
Aprender las operaciones básicas de Milvus:
Implementa tu clúster de Milvus en la nube:
Descubre Milvus WebUI, una interfaz web intuitiva para la observabilidad y la gestión de Milvus.
Descubre Milvus Backup, una herramienta de código abierto para realizar copias de seguridad de los datos de Milvus.
Descubre Birdwatcher, una herramienta de código abierto para la depuración de Milvus y las actualizaciones dinámicas de la configuración.
Descubre Attu, una herramienta GUI de código abierto para la gestión intuitiva de Milvus.