Ejecutar Milvus en Kubernetes con Milvus Operator
Esta página ilustra cómo iniciar una instancia Milvus en Kubernetes utilizando Milvus Operator.
Visión general
Milvus Operator es una solución que le ayuda a desplegar y gestionar una pila completa de servicios Milvus en clusters Kubernetes (K8s). La pila incluye todos los componentes de Milvus y las dependencias relevantes como etcd, Pulsar y MinIO.
Requisitos previos
Instale una StorageClass. Puede 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 false
Compruebe 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 basados en el tamaño de sus datos. Esto ayuda a garantizar un rendimiento y una asignación de recursos óptimos para su instalación de Milvus.
Si encuentra algún problema al tirar de la imagen, póngase en contacto con nosotros en community@zilliz.com con detalles sobre el problema, y le proporcionaremos la asistencia necesaria.
Instalar Milvus Operator
Milvus Operator define los recursos personalizados de un cluster Milvus sobre los recursos personalizados de Kubernetes. Cuando se definen los recursos personalizados, puede utilizar las API de K8s de forma declarativa y gestionar la pila de despliegue de Milvus para garantizar su escalabilidad y alta disponibilidad.
1. Instalar cert-manager
Milvus Operator utiliza cert-manager para proporcionar un certificado para el servidor webhook.
- Puede omitir con seguridad este paso si elige desplegar Milvus Operator utilizando Helm.
- Milvus Operator requiere cert-manager 1.1.3 o superior.
Ejecute el siguiente comando para instalar cert-manager.
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
Verá una salida similar a la siguiente una vez finalizado el proceso de instalación.
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io created
namespace/cert-manager created
serviceaccount/cert-manager-cainjector created
...
service/cert-manager created
service/cert-manager-webhook created
deployment.apps/cert-manager-cainjector created
deployment.apps/cert-manager created
deployment.apps/cert-manager-webhook created
mutatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
Puede comprobar si los pods cert-manager se están ejecutando de la siguiente manera:
$ kubectl get pods -n cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-848f547974-gccz8 1/1 Running 0 70s
cert-manager-cainjector-54f4cc6b5-dpj84 1/1 Running 0 70s
cert-manager-webhook-7c9588c76-tqncn 1/1 Running 0 70s
2. Instalar Milvus Operator
Puede instalar Milvus Operator de cualquiera de las siguientes formas:
Instalar con Helm
Ejecute 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.0.1/milvus-operator-1.0.1.tgz
Verá una salida similar a la 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
Instalar con kubectl
Ejecute el siguiente comando para instalar Milvus Operator con kubectl
.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Verá un resultado similar al siguiente una vez finalizado el proceso de instalación.
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
certificate.cert-manager.io/milvus-operator-serving-cert created
issuer.cert-manager.io/milvus-operator-selfsigned-issuer created
mutatingwebhookconfiguration.admissionregistration.k8s.io/milvus-operator-mutating-webhook-configuration created
validatingwebhookconfiguration.admissionregistration.k8s.io/milvus-operator-validating-webhook-configuration created
Puede comprobar si el pod 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
Despliegue Milvus
1. Despliegue de un cluster Milvus
Una vez que el pod Milvus Operator se está ejecutando, puede desplegar un cluster Milvus como sigue.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
El comando anterior despliega un cluster Milvus con sus componentes y dependencias en pods separados utilizando configuraciones por defecto. Para personalizar estas configuraciones, le recomendamos que utilice la herramienta Milvus Sizing Tool para ajustar las configuraciones en función del tamaño real de sus datos y, a continuación, descargue el archivo YAML correspondiente. Para saber más sobre los parámetros de configuración, consulte Milvus System Configurations Checklist.
- El nombre de la versión sólo debe contener letras, números y guiones. Los puntos no están permitidos en el nombre de la versión.
- También puede desplegar una instancia de Milvus en modo autónomo, donde todos sus componentes están contenidos en un único pod. Para ello, cambie la URL del archivo de configuración en el comando anterior a
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. Comprobar el estado del cluster Milvus
Ejecute el siguiente comando para comprobar el estado del cluster Milvus
$ kubectl get milvus my-release -o yaml
Una vez que su cluster Milvus esté listo, la salida del comando anterior debería ser similar a la siguiente. Si el campo status.status
permanece Unhealthy
, su cluster Milvus está todavía en proceso de creación.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
conditions:
- lastTransitionTime: "2021-11-02T05:59:41Z"
reason: StorageReady
status: "True"
type: StorageReady
- lastTransitionTime: "2021-11-02T06:06:23Z"
message: Pulsar is ready
reason: PulsarReady
status: "True"
type: PulsarReady
- lastTransitionTime: "2021-11-02T05:59:41Z"
message: Etcd endpoints is healthy
reason: EtcdReady
status: "True"
type: EtcdReady
- lastTransitionTime: "2021-11-02T06:12:36Z"
message: All Milvus components are healthy
reason: MilvusClusterHealthy
status: "True"
type: MilvusReady
endpoint: my-release-milvus.default:19530
status: Healthy
Milvus Operator crea dependencias Milvus, como etcd, Pulsar y MinIO, y luego componentes Milvus, como proxy, coordinadores y nodos.
Una vez que su cluster Milvus esté listo, el estado de todos los pods en el cluster Milvus debería ser similar al siguiente.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 14m
my-release-etcd-1 1/1 Running 0 14m
my-release-etcd-2 1/1 Running 0 14m
my-release-milvus-datanode-5c686bd65-wxtmf 1/1 Running 0 6m
my-release-milvus-indexnode-5b9787b54-xclbx 1/1 Running 0 6m
my-release-milvus-proxy-84f67cdb7f-pg6wf 1/1 Running 0 6m
my-release-milvus-querynode-5bcb59f6-nhqqw 1/1 Running 0 6m
my-release-milvus-mixcoord-fdcccfc84-9964g 1/1 Running 0 6m
my-release-minio-0 1/1 Running 0 14m
my-release-minio-1 1/1 Running 0 14m
my-release-minio-2 1/1 Running 0 14m
my-release-minio-3 1/1 Running 0 14m
my-release-pulsar-bookie-0 1/1 Running 0 14m
my-release-pulsar-bookie-1 1/1 Running 0 14m
my-release-pulsar-bookie-init-h6tfz 0/1 Completed 0 14m
my-release-pulsar-broker-0 1/1 Running 0 14m
my-release-pulsar-broker-1 1/1 Running 0 14m
my-release-pulsar-proxy-0 1/1 Running 0 14m
my-release-pulsar-proxy-1 1/1 Running 0 14m
my-release-pulsar-pulsar-init-d2t56 0/1 Completed 0 14m
my-release-pulsar-recovery-0 1/1 Running 0 14m
my-release-pulsar-toolset-0 1/1 Running 0 14m
my-release-pulsar-zookeeper-0 1/1 Running 0 14m
my-release-pulsar-zookeeper-1 1/1 Running 0 13m
my-release-pulsar-zookeeper-2 1/1 Running 0 13m
3. Reenvíe un puerto local a Milvus
Ejecute el siguiente comando para obtener el puerto en el que sirve su cluster 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 Milvus sirve en el puerto por defecto 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, ejecute el siguiente comando para reenviar un puerto local al puerto en el que sirve Milvus.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Opcionalmente, puede utilizar :19530
en lugar de 27017:19530
en el comando anterior para dejar que kubectl
asigne un puerto local para usted de modo que no tenga que gestionar conflictos de puertos.
Por defecto, el reenvío de puertos de kubectl sólo escucha en localhost
. Utilice la bandera address
si desea que Milvus escuche en las direcciones IP seleccionadas o en todas. El siguiente comando hace que port-forward escuche en todas las direcciones IP de la máquina anfitriona.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Desinstalar Milvus
Ejecute el siguiente comando para desinstalar el cluster Milvus.
$ kubectl delete milvus my-release
- Cuando elimina el cluster Milvus utilizando la configuración por defecto, las dependencias como etcd, Pulsar y MinIO no se eliminan. Por lo tanto, la próxima vez que instale la misma instancia de cluster Milvus, estas dependencias se utilizarán de nuevo.
- Para eliminar las dependencias y nubes virtuales privadas (PVCs) junto con el cluster Milvus, vea 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.0.1/deploy/manifests/deployment.yaml
Lo que sigue
Habiendo instalado Milvus en Docker, puede:
Comprobar Hello Milvus para ver lo que Milvus puede hacer.
Aprender las operaciones básicas de Milvus:
Despliegue su clúster Milvu en nubes:
Explore Milvus Backup, una herramienta de código abierto para realizar copias de seguridad de los datos de Milvus.
Explore Birdwatcher, una herramienta de código abierto para depurar Milvus y actualizaciones dinámicas de configuración.
Explore Attu, una herramienta GUI de código abierto para la gestión intuitiva de Milvus.