Executar o Milvus no Kubernetes com o Milvus Operator
Esta página ilustra como iniciar uma instância do Milvus no Kubernetes utilizando o Milvus Operator.
Visão geral
O Milvus Operator é uma solução que o ajuda a implementar e gerir uma pilha completa de serviços do Milvus para clusters do Kubernetes (K8s). A pilha inclui todos os componentes do Milvus e dependências relevantes, como o etcd e o MinIO, com o Woodpecker como fila de mensagens integrada.
Pré-requisitos
Instale uma StorageClass. Pode verificar a StorageClass instalada da seguinte forma.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseVerifique os requisitos de hardware e software antes da instalação.
Antes de instalar o Milvus, recomenda-se utilizar a Ferramenta de Dimensionamento do Milvus para estimar os requisitos de hardware com base no tamanho dos seus dados. Isto ajuda a garantir um desempenho ideal e uma alocação de recursos otimizada para a sua instalação do Milvus.
Se tiver alguma dificuldade ao descarregar a imagem, contacte-nos através do endereço community@zilliz.com com detalhes sobre o problema e iremos prestar-lhe o apoio necessário.
Instalar o Milvus Operator
O Milvus Operator define recursos personalizados do cluster Milvus com base nos Recursos Personalizados do Kubernetes. Quando os recursos personalizados são definidos, pode utilizar as APIs do K8s de forma declarativa e gerir a pilha de implementação do Milvus para garantir a sua escalabilidade e alta disponibilidade.
Execute o comando seguinte para instalar o Milvus Operator com o 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á um resultado semelhante ao seguinte após a conclusão do processo de instalação.
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
Se já tiver instalado o Milvus Operator anteriormente, atualize-o utilizando o seguinte 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
Execute o comando seguinte para instalar o Milvus Operator com o kubectl.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Após a conclusão do processo de instalação, irá ver um resultado semelhante ao seguinte.
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
Pode verificar se o pod do Milvus Operator está a funcionar da seguinte forma:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
Implementar o Milvus
1. Implementar um cluster Milvus
Assim que o pod do Milvus Operator estiver a funcionar, pode implementar um cluster do Milvus da seguinte forma.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_woodpecker.yaml
O comando acima implementa um cluster Milvus com o Woodpecker como fila de mensagens (recomendado para a v3.0.3) e todos os novos componentes arquitetónicos, incluindo o Streaming Node.
Destaques da arquitetura nesta implementação:
- Fila de mensagens: utiliza o Woodpecker (reduz a manutenção da infraestrutura)
- Nó de streaming: ativado para um processamento de dados melhorado
- Coordenador Mix: Componentes de coordenação consolidados para maior eficiência
Para personalizar estas definições, recomendamos que utilize a Ferramenta de Dimensionamento do Milvus para ajustar as configurações com base no tamanho real dos seus dados e, em seguida, descarregue o ficheiro YAML correspondente. Para saber mais sobre os parâmetros de configuração, consulte a Lista de Verificação de Configurações do Sistema Milvus.
- O nome da versão deve conter apenas letras, números e traços. Não são permitidos pontos no nome da versão.
- Também pode implementar uma instância do Milvus no modo autónomo, em que todos os seus componentes estão contidos num único pod. Para tal, altere o URL do ficheiro de configuração no comando acima para
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. Verificar o estado do cluster do Milvus
Execute o seguinte comando para verificar o estado do cluster do Milvus
$ kubectl get milvus my-release -o yaml
Assim que o seu cluster Milvus estiver pronto, a saída do comando acima deverá ser semelhante à seguinte. Se o campo « status.status » permanecer como « Unhealthy », o seu cluster Milvus ainda está a ser criado.
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
O Milvus Operator cria as dependências do Milvus, tais como o etcd e o MinIO, e, em seguida, os componentes do Milvus, tais como o proxy, os coordenadores e os nós.
Assim que o seu cluster Milvus estiver pronto, o estado de todos os pods no cluster Milvus deverá ser semelhante ao seguinte.
$ 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. Redirecionar uma porta local para o Milvus
Execute o comando seguinte para obter a porta na qual o seu cluster Milvus está a funcionar.
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
A saída mostra que a instância do Milvus está a funcionar na porta predefinida 19530.
Se tiver implementado o Milvus no modo autónomo, altere o nome do pod de « my-release-milvus-proxy-xxxxxxxxxx-xxxxx » para « my-release-milvus-xxxxxxxxxx-xxxxx ».
Em seguida, execute o comando seguinte para redirecionar uma porta local para a porta em que o Milvus está a funcionar.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
Opcionalmente, pode utilizar :19530 em vez de 27017:19530 no comando acima para permitir que o kubectl atribua uma porta local por si, de modo a não ter de gerir conflitos de portas.
Por predefinição, o reencaminhamento de portas do `kubectl` apenas escuta em localhost. Utilize o sinalizador address se pretender que o Milvus escute no endereço IP selecionado ou em todos os endereços IP. O comando seguinte faz com que o reencaminhamento de portas escute em todos os endereços IP da máquina anfitriã.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Agora, pode ligar-se ao Milvus utilizando a porta reencaminhada.
(Opcional) Atualizar as configurações do Milvus
Pode visualizar e atualizar as configurações do seu cluster Milvus executando o comando ` patch ` da seguinte forma:
Execute o comando seguinte para pré-visualizar as configurações propostas.
O exemplo seguinte pressupõe que pretende atualizar o parâmetro «
spec.components.disableMetric» para «false» ms.$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}' \ --dry-run=client -o yamlPara os itens de configuração aplicáveis, consulte «Configuração do sistema».
Atualize as configurações.
$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}'
Aceda à Milvus WebUI
O Milvus inclui uma ferramenta GUI integrada chamada Milvus WebUI, à qual pode aceder através do seu navegador. A Milvus WebUI melhora a observabilidade do sistema com uma interface simples e intuitiva. Pode utilizar a Milvus WebUI para observar as estatísticas e métricas dos componentes e dependências do Milvus, verificar detalhes da base de dados e da recolha de dados e listar configurações detalhadas do Milvus. Para mais detalhes sobre a Milvus WebUI, consulte Milvus WebUI
Para ativar o acesso à Milvus WebUI, é necessário redirecionar as portas do pod proxy para uma porta local.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
Agora, pode aceder à interface web do Milvus em http://localhost:27018.
Desinstalar o Milvus
Execute o seguinte comando para desinstalar o cluster do Milvus.
$ kubectl delete milvus my-release
- Quando elimina o cluster Milvus utilizando a configuração predefinida, as dependências como o etcd e o MinIO não são eliminadas. Por conseguinte, da próxima vez que instalar a mesma instância do cluster Milvus, estas dependências serão utilizadas novamente.
- Para eliminar as dependências e as reivindicações de volume persistente (PVCs) juntamente com o cluster do Milvus, consulte o ficheiro de configuração.
Desinstalar o Milvus Operator
Existem também duas formas de desinstalar o Milvus Operator.
Desinstalar com o Helm
$ helm -n milvus-operator uninstall milvus-operator
Desinstalar com o kubectl
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml
Dependências opcionais
Esta implementação utiliza o Woodpecker como fila de mensagens, o etcd para metadados e o MinIO para armazenamento de objetos, todos provisionados pelo Milvus Operator. Para utilizar um backend diferente com o Operator, consulte:
- Fila de mensagens: Woodpecker (padrão) · Pulsar · Kafka · RocksMQ
- Armazenamento de objetos: Configurar o armazenamento de objetos com o Milvus Operator
- Metadados: Configurar o etcd com o Milvus Operator
O Storage V3 está desativado por predefinição. Ative-o antes de utilizar funcionalidades que dependam dele. Para conhecer os requisitos e as considerações de compatibilidade, consulte Storage V3.
Próximos passos
Depois de instalar o Milvus no Docker, pode:
Consulte «Hello Milvus » para ver o que o Milvus pode fazer.
Aprender as operações básicas do Milvus:
Implemente o seu cluster Milvus nas nuvens:
Explore o Milvus WebUI, uma interface web intuitiva para a monitorização e gestão do Milvus.
Explore o Milvus Backup, uma ferramenta de código aberto para cópias de segurança dos dados do Milvus.
Explore o Birdwatcher, uma ferramenta de código aberto para depuração do Milvus e atualizações dinâmicas de configuração.
Explore o Attu, uma ferramenta GUI de código aberto para a gestão intuitiva do Milvus.