Executar o Milvus no Kubernetes com o Helm
Esta página ilustra como iniciar uma instância do Milvus no Kubernetes usando os gráficos do Milvus Helm.
Visão geral
O Helm usa um formato de empacotamento chamado gráficos. Um gráfico é uma coleção de arquivos que descrevem um conjunto relacionado de recursos do Kubernetes. O Milvus fornece um conjunto de gráficos para ajudá-lo a implantar dependências e componentes do Milvus.
Pré-requisitos
Instalar 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, é recomendável usar a Milvus Sizing Tool para estimar os requisitos de hardware com base no tamanho dos seus dados. Isso ajuda a garantir o desempenho ideal e a alocação de recursos para a instalação do Milvus.
Se encontrar algum problema ao puxar a imagem, contacte-nos em community@zilliz.com com detalhes sobre o problema, e nós forneceremos o suporte necessário.
Instalar o Milvus Helm Chart
Antes de instalar o Milvus Helm Charts, é necessário adicionar o repositório Milvus Helm.
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
O repositório do Milvus Helm Charts em https://github.com/milvus-io/milvus-helm foi arquivado. Agora usamos o novo repositório em https://github.com/zilliztech/milvus-helm. O repositório arquivado ainda está disponível para gráficos até à versão 4.0.31, mas utilize o novo repositório para versões posteriores.
De seguida, obtenha os gráficos Milvus a partir do repositório da seguinte forma:
$ helm repo update
Pode sempre executar este comando para obter os gráficos mais recentes do Milvus Helm.
Instalação online
1. Implantar um cluster do Milvus
Depois de instalar o Helm chart, você pode iniciar o Milvus no Kubernetes. Esta secção orienta-o na implementação de um cluster do Milvus.
Precisa de uma implementação autónoma?
Se preferir implantar o Milvus no modo autônomo (nó único) para desenvolvimento ou teste, use este comando:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--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 usa o Woodpecker como a fila de mensagens padrão e ativa o componente Streaming Node. Para obter detalhes, consulte Visão geral da arquitetura e Usar o Woodpecker.
Implantar o cluster do Milvus:
O comando a seguir implanta um cluster do Milvus com configurações otimizadas para a versão 2.6.15, usando o Woodpecker como a fila de mensagens recomendada:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--set pulsarv3.enabled=false \
--set woodpecker.enabled=true \
--set streaming.enabled=true \
--set indexNode.enabled=false
O que este comando faz:
- Usa o Woodpecker como a fila de mensagens (recomendado para manutenção reduzida)
- Habilita o novo componente Streaming Node para melhorar o desempenho
- Desabilita o antigo Nó de Índice (a funcionalidade agora é tratada pelo Nó de Dados)
- Desabilita o Pulsar para usar o Woodpecker
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: Streaming Node é introduzido e ativado por defeito
- Componentes mesclados: O nó de índice e o nó de dados são combinados em um único nó de dados
Para obter detalhes completos da arquitetura, consulte a Visão geral da arquitetura.
Opções alternativas de fila de mensagens:
Se preferir usar o Pulsar (escolha tradicional) em vez do Woodpecker:
helm install my-release zilliztech/milvus \
--set image.all.tag=v2.6.15 \
--set streaming.enabled=true \
--set indexNode.enabled=false
Próximas etapas:O comando acima implanta o Milvus com as configurações recomendadas. Para uso em produção:
- Use a Milvus Sizing Tool para otimizar as configurações com base no tamanho dos seus dados
- Reveja a Lista de Verificação das Configurações do Sistema Milvus para opções de configuração avançadas
Notas importantes:
- Nomeação de versões: Use apenas letras, números e traços (não são permitidos pontos)
- Kubernetes v1.25+: se você encontrar problemas de PodDisruptionBudget, use esta solução alternativa:
helm install my-release zilliztech/milvus \ --set pulsar.bookkeeper.pdb.usePolicy=false \ --set pulsar.broker.pdb.usePolicy=false \ --set pulsar.proxy.pdb.usePolicy=false \ --set pulsar.zookeeper.pdb.usePolicy=false
Para obter mais informações, consulte o Milvus Helm Chart e a documentação do Helm.
2. Verificar o status do cluster do Milvus
Verifique se a implantação foi bem-sucedida verificando o status do pod:
kubectl get pods
Aguarde até que todos os pods mostrem o status "Running". Com a configuração v2.6.15, 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-streaming-node-xxxxxxxxx 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
my-release-pulsar-autorecovery-86f5dbdf77-lchpc 1/1 Running 0 3m24s
my-release-pulsar-bookkeeper-0 1/1 Running 0 3m23s
my-release-pulsar-bookkeeper-1 1/1 Running 0 98s
my-release-pulsar-broker-556ff89d4c-2m29m 1/1 Running 0 3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-0 1/1 Running 0 3m23s
my-release-pulsar-zookeeper-metadata-98zbr 0/1 Completed 0 3m24s
Principais componentes a verificar:
- Componentes do Milvus:
mixcoord,datanode,querynode,proxy,streaming-node - Dependências:
etcd(metadados),minio(armazenamento de objectos),pulsar(fila de mensagens)
Também pode aceder à WebUI do Milvus em http://127.0.0.1:9091/webui/ assim que o reencaminhamento de portas estiver configurado (ver passo seguinte). Para mais pormenores, consulte Milvus WebUI.
3. Conectar-se ao Milvus
Para se conectar ao seu cluster Milvus de fora do Kubernetes, é necessário configurar o encaminhamento de porta.
Configurar o encaminhamento de porta:
kubectl port-forward service/my-release-milvus 27017:19530
Este comando encaminha sua porta local 27017 para a porta do Milvus 19530. Você deve ver:
Forwarding from 127.0.0.1:27017 -> 19530
Detalhes da conexão:
- Conexão local:
localhost:27017 - Porta padrão do Milvus:
19530
Opções para encaminhamento de porta:
- Atribuir automaticamente a porta local: Usar
:19530em vez de27017:19530para deixar o kubectl escolher uma porta disponível - Escutar em todas as interfaces: Adicionar
--address 0.0.0.0para permitir conexões 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 estiver a utilizar o Milvus. Pode agora 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-o novamente.
Crie um ficheiro
values.yamlcom as configurações pretendidas.O que se segue pressupõe que pretende ativar
proxy.http.extraConfigFiles: user.yaml: |+ proxy: http: enabled: truePara itens de configuração aplicáveis, consulte Configuração do sistema.
Aplique o arquivo
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 deve mostrar as configurações atualizadas.
Acesso à WebUI do Milvus
O Milvus é fornecido com uma ferramenta GUI incorporada chamada Milvus WebUI, à qual pode aceder através do seu browser. A Milvus Web UI melhora a observabilidade do sistema com uma interface simples e intuitiva. Pode utilizar a Milvus Web UI para observar as estatísticas e métricas dos componentes e dependências do Milvus, verificar detalhes da base de dados e da coleção, e listar configurações detalhadas do Milvus. Para obter detalhes sobre a Milvus Web UI, consulte Milvus WebUI
Para ativar o acesso à Milvus Web UI, é necessário reencaminhar a porta 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 à UI Web do Milvus em http://localhost:27018.
Instalação offline
Se estiver num ambiente com restrições de rede, siga o procedimento desta secção para iniciar um cluster do Milvus.
1. Obter o manifesto do Milvus
Execute o seguinte comando para obter o manifesto do Milvus.
$ helm template my-release zilliztech/milvus > milvus_manifest.yaml
O comando acima renderiza modelos de gráficos para um cluster Milvus e salva a saída em um arquivo de manifesto chamado milvus_manifest.yaml. Usando esse manifesto, você pode instalar um cluster do Milvus com 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 zilliztech/milvus > milvus_manifest.yamlpara renderizar modelos de gráficos para uma instância do Milvus num modo autónomo. - Para alterar as configurações do Milvus, descarregue o modelo
value.yamlcoloque as configurações desejadas nele e usehelm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yamlpara renderizar o manifesto de acordo.
2. Descarregar o script de extração de imagens
O script de extração de imagens é 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. Extrair e guardar imagens
Execute o seguinte comando para extrair e guardar as imagens necessárias.
$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml
As imagens são puxadas para uma subpasta chamada images no diretório atual.
4. Carregar imagens
Pode agora carregar as imagens para os anfitriões no ambiente de rede restrita da seguinte forma:
$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done
5. Implantar o Milvus
$ kubectl apply -f milvus_manifest.yaml
Até agora, pode seguir os passos 2 e 3 da instalação online para verificar o estado do cluster e encaminhar uma porta local para o Milvus.
Atualizar o cluster do 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 seguinte comando para desinstalar o Milvus.
$ helm uninstall my-release
O que vem a seguir
Depois de instalar o Milvus no Docker, você pode:
Verificar o Hello Milvus para ver o que o Milvus pode fazer.
Aprender as operações básicas do Milvus:
Implantar seu cluster Milvus em nuvens:
Explore o Milvus WebUI, uma interface web intuitiva para a observabilidade e gestão do Milvus.
Explore o Milvus Backup, uma ferramenta de código aberto para backups de dados do Milvus.
Explore o Birdwatcher, uma ferramenta de código aberto para depuração do Milvus e actualizações de configuração dinâmica.
Explore o Attu, uma ferramenta GUI de código aberto para gerenciamento intuitivo do Milvus.