Executar o Milvus no Kubernetes com o Helm
Esta página ilustra como iniciar uma instância do Milvus no Kubernetes utilizando os gráficos Helm do Milvus.
Visão geral
O Helm utiliza um formato de empacotamento denominado «charts». Um chart é um conjunto de ficheiros que descreve um conjunto relacionado de recursos do Kubernetes. O Milvus fornece um conjunto de charts para o ajudar a implementar as dependências e os componentes do Milvus.
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 adequada 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 Helm Chart do Milvus
Antes de instalar os Helm Charts do Milvus, é necessário adicionar o repositório Helm do Milvus.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
O repositório de Helm Charts do Milvus em https://github.com/milvus-io/milvus-helm foi arquivado. Agora utilizamos o novo repositório em https://github.com/zilliztech/milvus-helm. O repositório arquivado continua disponível para charts até à versão 4.0.31, mas utilize o novo repositório para versões posteriores.
Em seguida, obtenha os gráficos Milvus a partir do repositório da seguinte forma:
$ helm repo update
Pode executar este comando a qualquer momento para obter os gráficos Helm mais recentes do Milvus.
Instalação online
1. Implemente um cluster Milvus
Depois de instalar o gráfico Helm, pode iniciar o Milvus no Kubernetes. Esta secção orienta-o na implementação de um cluster Milvus.
Precisa, em vez disso, de uma implantação autónoma?
Se preferir implementar o Milvus no modo autónomo (um único nó) para desenvolvimento ou testes, utilize este comando:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.3 \
--set cluster.enabled=false \
--set pulsarv3.enabled=false \
--set standalone.messageQueue=woodpecker \
--set woodpecker.enabled=true \
--set streaming.enabled=true
Nota: O modo autónomo utiliza o Woodpecker como fila de mensagens predefinida e ativa o componente Streaming Node. As implementações autónomas executam o Woodpecker incorporado no pod do Milvus; o serviço dedicado do Woodpecker (pods separados) é utilizado apenas para implementações distribuídas/em cluster. Para mais detalhes, consulte a Visão Geral da Arquitetura e o Woodpecker.
Implementar o cluster do Milvus:
Para o modo de serviço do Woodpecker, recomendamos a utilização do Milvus 3.0.3 ou posterior com o Woodpecker v0.1.46 ou posterior.
O comando seguinte implementa um cluster Milvus com definições otimizadas para a v3.0.3, utilizando o Woodpecker como fila de mensagens recomendada:
helm install my-release zilliztech/milvus \
--set image.all.tag=v3.0.3 \
--set woodpecker.enabled=true \
--set woodpecker.image.tag=v0.1.46 \
--set streaming.enabled=true \
--set streaming.woodpecker.embedded=false \
--set indexNode.enabled=false
O que este comando faz:
- Utiliza o Woodpecker como fila de mensagens (recomendado para reduzir a manutenção)
- Executa o Woodpecker como um serviço dedicado (um StatefulSet separado), não incorporado no nó de streaming
- Ativa o novo componente «Streaming Node » para melhorar o desempenho
- Desativa o Nodo de Índice antigo (a funcionalidade é agora gerida pelo Nodo de Dados)
Alterações na arquitetura do Milvus 2.6.x:
- Fila de mensagens: o Woodpecker é agora recomendado (reduz a manutenção da infraestrutura em comparação com o Pulsar)
- Novo componente: o Nodo de Streaming é introduzido e ativado por predefinição
- Componentes fundidos: o Nodo de Índice e o Nodo de Dados são combinados num único Nodo de Dados
Para obter detalhes completos sobre a arquitetura, consulte a Visão Geral da Arquitetura.
Filas de mensagens alternativas: para implementar com o Pulsar, o Kafka ou o RocksMQ em vez do Woodpecker, consulte Dependências opcionais.
Próximos passos: O comando acima implementa o Milvus com as configurações recomendadas. Para utilização em produção:
- Utilize a Ferramenta de Dimensionamento do Milvus para otimizar as definições com base no tamanho dos seus dados
- Consulte a Lista de verificação das configurações do sistema Milvus para opções de configuração avançadas
Notas importantes:
- Nomeação da versão: utilize apenas letras, números e traços (não são permitidos pontos)
Para mais informações, consulte o gráfico Helm do Milvus e a documentação do Helm.
2. Verifique o estado do cluster do Milvus
Verifique se a sua implementação foi bem-sucedida, verificando o estado dos pods:
kubectl get pods
Aguarde até que todos os pods apresentem o estado «Running». Com a configuração v3.0.3, deverá ver pods semelhantes a:
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 3m23s
my-release-etcd-1 1/1 Running 0 3m23s
my-release-etcd-2 1/1 Running 0 3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm 1/1 Running 0 3m23s
my-release-milvus-mixcoord-7fb9488465-dmbbj 1/1 Running 0 3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv 1/1 Running 0 3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg 1/1 Running 0 3m24s
my-release-milvus-streamingnode-7b8cfc769c-mqmsm 1/1 Running 0 3m24s
my-release-milvus-woodpecker-0 1/1 Running 0 3m24s
my-release-milvus-woodpecker-1 1/1 Running 0 3m24s
my-release-milvus-woodpecker-2 1/1 Running 0 3m24s
my-release-milvus-woodpecker-3 1/1 Running 0 3m24s
my-release-minio-0 1/1 Running 0 3m23s
my-release-minio-1 1/1 Running 0 3m23s
my-release-minio-2 1/1 Running 0 3m23s
my-release-minio-3 1/1 Running 0 3m23s
Componentes-chave a verificar:
- Componentes do Milvus:
mixcoord,datanode,querynode,proxy,streamingnode - Dependências:
etcd(metadados),minio(armazenamento de objetos),woodpecker(fila de mensagens)
Com streaming.woodpecker.embedded=false, o Woodpecker funciona como um StatefulSet dedicado (my-release-milvus-woodpecker, 4 réplicas por predefinição — um quórum de 3 nós mais um de reserva para tolerância a falhas; não defina woodpecker.replicaCount abaixo de 3) liderado por um serviço sem interface gráfica, utilizando o MinIO como backend de armazenamento — pelo que o cluster possui um conjunto separado de pods woodpecker, distinto do nó de streaming.
Também pode aceder à interface Web do Milvus em http://127.0.0.1:9091/webui/ assim que o reencaminhamento de portas estiver configurado (ver o passo seguinte). Para mais detalhes, consulte a interface Web do Milvus.
3. Ligar-se ao Milvus
Para se ligar ao seu cluster Milvus a partir do exterior do Kubernetes, é necessário configurar o reencaminhamento de portas.
Configurar o reencaminhamento de portas:
kubectl port-forward service/my-release-milvus 27017:19530
Este comando redireciona a sua porta local 27017 para a porta do Milvus 19530. Deverá ver:
Forwarding from 127.0.0.1:27017 -> 19530
Detalhes da ligação:
- Ligação local:
localhost:27017 - Porta predefinida do Milvus:
19530
Opções para o reencaminhamento de portas:
- Atribuir porta local automaticamente: Utilize
:19530em vez de27017:19530para permitir que o kubectl escolha uma porta disponível - Escutar em todas as interfaces: Adicione
--address 0.0.0.0para permitir ligações a partir de outras máquinas:kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530 - Implementação autónoma: Se estiver a utilizar o modo autónomo, o nome do serviço permanece o mesmo
Mantenha este terminal aberto enquanto utiliza o Milvus. Agora pode ligar-se ao Milvus utilizando qualquer SDK do Milvus em localhost:27017.
(Opcional) Atualizar as configurações do Milvus
Pode atualizar as configurações do seu cluster Milvus editando o ficheiro values.yaml e aplicando-as novamente.
Crie um ficheiro
values.yamlcom as configurações pretendidas.O que se segue pressupõe que pretende ativar o
proxy.http.extraConfigFiles: user.yaml: |+ proxy: http: enabled: truePara os itens de configuração aplicáveis, consulte «Configuração do sistema».
Aplique o ficheiro `
values.yaml`.
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
Verifique as configurações atualizadas.
helm get values my-releaseA saída deverá apresentar as configurações atualizadas.
Aceder à 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.
Instalação offline
Se se encontrar num ambiente com restrições de rede, siga o procedimento descrito nesta secção para iniciar um cluster do Milvus.
1. Obter o manifesto do Milvus
Execute o comando seguinte para obter o manifesto do Milvus.
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
O comando acima gera modelos de gráficos para um cluster do Milvus e guarda o resultado num ficheiro de manifesto denominado « milvus_manifest.yaml ». Utilizando este manifesto, pode instalar um cluster do Milvus com os seus componentes e dependências em pods separados.
- Para instalar uma instância do Milvus no modo autónomo, em que todos os componentes do Milvus estão contidos num único pod, deve executar
helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false --set standalone.messageQueue=woodpecker --set woodpecker.enabled=true --set streaming.enabled=true zilliztech/milvus > milvus_manifest.yamlpara gerar modelos de gráfico para uma instância do Milvus no modo autónomo. - Para alterar as configurações do Milvus, descarregue o
value.yamlmodelo, insira as definições pretendidas e utilizehelm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yamlpara gerar o manifesto em conformidade.
2. Descarregar o script de obtenção de imagens
O script de obtenção de imagens foi desenvolvido em Python. Deve descarregar o script juntamente com as suas dependências no ficheiro requirement.txt.
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py
3. Obter e guardar imagens
Execute o comando seguinte para descarregar e guardar as imagens necessárias.
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
As imagens são descarregadas para uma subpasta chamada « images » no diretório atual.
4. Carregar imagens
Pode agora carregar as imagens nos anfitriões no ambiente com restrições de rede da seguinte forma:
$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done
5. Implementar o Milvus
$ kubectl apply -f milvus_manifest.yaml
Até ao momento, pode seguir os passos 2 e 3 da instalação online para verificar o estado do cluster e redirecionar uma porta local para o Milvus.
Atualizar o cluster Milvus em execução
Execute o seguinte comando para atualizar o seu cluster Milvus em execução para a versão mais recente:
$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values
Desinstalar o Milvus
Execute o comando seguinte para desinstalar o Milvus.
$ helm uninstall my-release
Dependências opcionais
Esta implementação utiliza o Woodpecker como fila de mensagens, o etcd para metadados e o MinIO para armazenamento de objetos. Para utilizar uma fila de mensagens diferente ou ligar armazenamento de objetos/metadados externos, consulte:
- Fila de mensagens: Woodpecker (padrão) · Pulsar · Kafka · RocksMQ
- Armazenamento de objetos: MinIO (padrão) · AWS S3 · Azure Blob · GCP Cloud Storage · Aliyun OSS · Tencent COS · Huawei OBS · Compatível com S3
- Metadados: etcd
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.