🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Implantação do Milvus no Kubernetes: Um guia passo-a-passo para utilizadores de Kubernetes

Implantação do Milvus no Kubernetes: Um guia passo-a-passo para utilizadores de Kubernetes

  • Engineering
September 26, 2024
Gael Gu

O Milvus é um banco de dados vetorial de código aberto projetado para armazenar, indexar e pesquisar grandes quantidades de dados não estruturados por meio de representações vetoriais, tornando-o perfeito para aplicativos orientados por IA, como pesquisa de similaridade, pesquisa semântica, geração aumentada de recuperação(RAG), mecanismos de recomendação e outras tarefas de aprendizado de máquina.

Mas o que torna o Milvus ainda mais poderoso é a sua integração perfeita com o Kubernetes. Se é um aficionado do Kubernetes, sabe que a plataforma é perfeita para orquestrar sistemas distribuídos e escaláveis. O Milvus tira o máximo partido das capacidades do Kubernetes, permitindo-lhe implementar, escalar e gerir facilmente clusters distribuídos do Milvus. Este guia fornecerá uma explicação clara e passo a passo para configurar o Milvus no Kubernetes usando o Milvus Operator.

Pré-requisitos

Antes de começarmos, certifique-se de ter os seguintes pré-requisitos em vigor:

  • Um cluster do Kubernetes instalado e em execução. Se você estiver testando localmente, minikube é uma ótima escolha.

  • kubectl O sistema operacional Kubernetes está instalado e configurado para interagir com seu cluster do Kubernetes.

  • Familiaridade com os conceitos básicos do Kubernetes, como pods, serviços e implantações.

Etapa 1: Instalando o Minikube (para testes locais)

Se precisar de configurar um ambiente Kubernetes local, minikube é a ferramenta ideal para si. As instruções oficiais de instalação estão na página de introdução do minikube.

1. Instalar o Minikube

Visite a página de lançamentos do minikube e descarregue a versão apropriada para o seu sistema operativo. Para macOS/Linux, pode utilizar o seguinte comando:

$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

2. Iniciar o Minikube

$ minikube start

3. Interagir com o cluster

Agora, pode interagir com os seus clusters com o kubectl dentro do minikube. Se não tiver instalado o kubectl, o minikube baixará a versão apropriada por padrão.

$ minikube kubectl cluster-info

Como alternativa, é possível criar um link simbólico para o binário do minikube chamado kubectl para facilitar o uso.

$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info

Etapa 2: Configurando a StorageClass

No Kubernetes, uma StorageClass define os tipos de armazenamento disponíveis para suas cargas de trabalho, fornecendo flexibilidade no gerenciamento de diferentes configurações de armazenamento. Antes de continuar, você deve garantir que uma StorageClass padrão esteja disponível no seu cluster. Veja como verificar e configurar uma, se necessário.

1. Verificar as StorageClasses instaladas

Para ver as StorageClasses disponíveis no seu cluster Kubernetes, execute o seguinte comando:

$ kubectl get sc

Isso exibirá a lista de classes de armazenamento instaladas no seu cluster. Se uma StorageClass padrão já estiver configurada, ela será marcada com (default).

2. Configurar uma StorageClass padrão (se necessário)

Se nenhuma StorageClass padrão estiver configurada, é possível criar uma definindo-a em um arquivo YAML. Use o exemplo a seguir para criar uma StorageClass padrão:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
 name: default-storageclass
provisioner: k8s.io/minikube-hostpath

Esta configuração YAML define um StorageClass chamado default-storageclass que usa o provisionador minikube-hostpath, normalmente usado em ambientes de desenvolvimento local.

3. Aplicar a StorageClass

Depois que o arquivo default-storageclass.yaml for criado, aplique-o ao seu cluster usando o seguinte comando:

$ kubectl apply -f default-storageclass.yaml

Isso configurará a StorageClass padrão para seu cluster, garantindo que suas necessidades de armazenamento sejam gerenciadas adequadamente no futuro.

Etapa 3: Instalando o Milvus usando o Milvus Operator

O Milvus Operator simplifica a implantação do Milvus no Kubernetes, gerenciando a implantação, o dimensionamento e as atualizações. Antes de instalar o Milvus Operator, você precisará instalar o cert-manager, que fornece certificados para o servidor webhook usado pelo Milvus Operator.

1. Instalar o cert-manager

O Milvus Operator necessita de um cert-manager para gerir os certificados para uma comunicação segura. Certifique-se de que instala o cert-manager versão 1.1.3 ou posterior. Para o instalar, execute o seguinte comando:

$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml

Após a instalação, verifique se os pods do cert-manager estão a funcionar, executando:

$ kubectl get pods -n cert-manager

2. Instalar o Operador Milvus

Assim que o cert-manager estiver a funcionar, pode instalar o Milvus Operator. Execute o seguinte comando para o implementar utilizando kubectl:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml

Pode verificar se o pod do Milvus Operator está a funcionar utilizando o seguinte comando:

$ kubectl get pods -n milvus-operator

3. Implementar o Cluster Milvus

Quando o pod do Operador Milvus estiver a funcionar, pode implementar um cluster Milvus com o operador. O comando a seguir implanta um cluster do Milvus com seus componentes e dependências em pods separados usando as configurações padrão:

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml

Para personalizar as definições do Milvus, terá de substituir o ficheiro YAML pelo seu próprio ficheiro YAML de configuração. Além de editar ou criar manualmente o ficheiro, pode utilizar a Milvus Sizing Tool para ajustar as configurações e, em seguida, transferir o ficheiro YAML correspondente.

Para personalizar as definições do Milvus, é necessário substituir o ficheiro YAML predefinido pela sua própria configuração. Pode editar ou criar manualmente este ficheiro, adaptando-o às suas necessidades específicas.

Em alternativa, pode utilizar a Milvus Sizing Tool para uma abordagem mais simplificada. Esta ferramenta permite-lhe ajustar várias definições, como a atribuição de recursos e as opções de armazenamento, e depois descarregar o ficheiro YAML correspondente com as configurações pretendidas. Isso garante que a implantação do Milvus seja otimizada para o seu caso de uso específico.

Figura: Ferramenta de dimensionamento do Milvus

Pode demorar algum tempo a concluir a implementação. Pode verificar o estado do seu cluster Milvus através do comando:

$ kubectl get milvus my-release

Quando o cluster do Milvus estiver pronto, todos os pods no cluster do Milvus deverão estar em execução ou concluídos:

$ kubectl get pods

Passo 4: Acessando seu cluster Milvus

Assim que o seu cluster Milvus for implantado, você precisa acessá-lo encaminhando uma porta local para a porta de serviço do Milvus. Siga estas etapas para recuperar a porta de serviço e configurar o encaminhamento de porta.

1. Obter a porta de serviço

Primeiro, identifique a porta de serviço usando o seguinte comando. Substitua <YOUR_MILVUS_PROXY_POD> pelo nome do seu pod proxy Milvus, que normalmente começa com my-release-milvus-proxy-:

$ kubectl get pod <YOUR_MILVUS_PROXY_POD> --template ='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'

Este comando devolverá o número da porta que o seu serviço Milvus está a utilizar.

2. Encaminhar a porta

Para aceder ao seu cluster Milvus localmente, reencaminhe uma porta local para a porta de serviço utilizando o seguinte comando. Substitua <YOUR_LOCAL_PORT> pela porta local que deseja usar e <YOUR_SERVICE_PORT> pela porta de serviço recuperada na etapa anterior:

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus <YOUR_LOCAL_PORT>:<YOUR_SERVICE_PORT>

Esse comando permite que o encaminhamento de porta escute em todos os endereços IP da máquina host. Se você só precisa que o serviço escute em localhost, você pode omitir a opção --address 0.0.0.0.

Uma vez configurado o encaminhamento de porta, pode aceder ao seu cluster Milvus através da porta local especificada para outras operações ou integrações.

Passo 5: Ligar ao Milvus usando o Python SDK

Com o seu cluster Milvus instalado e a funcionar, pode agora interagir com ele utilizando qualquer SDK Milvus. Neste exemplo, usaremos o PyMilvus, o SDK Python do Milvus , para nos conectarmos ao cluster e realizar operações básicas.

1. Instalar o PyMilvus

Para interagir com o Milvus através de Python, é necessário instalar o pacote pymilvus:

$ pip install pymilvus

2. Ligar ao Milvus

Segue-se um exemplo de script Python que se liga ao seu cluster Milvus e demonstra como executar operações básicas, como a criação de uma coleção.

from pymilvus import MilvusClient
# Connect to the Milvus server
client = MilvusClient(uri="http://localhost:<YOUR_LOCAL_PORT>")
# Create a collection
collection_name = "example_collection"
if client.has_collection(collection_name):
   client.drop_collection(collection_name)
client.create_collection(
   collection_name=collection_name,
   dimension=768,  # The vectors we will use in this demo has 768 dimensions
)

Explicação:

  • Ligar ao Milvus: O script liga-se ao servidor Milvus em execução em localhost utilizando a porta local que configurou no Passo 4.

  • Criar uma coleção: Verifica se já existe uma coleção com o nome example_collection, elimina-a em caso afirmativo e cria uma nova coleção com vectores de 768 dimensões.

Este script estabelece uma conexão com o cluster Milvus e cria uma coleção, servindo como ponto de partida para operações mais complexas, como inserir vetores e realizar pesquisas de similaridade.

Conclusão

A implantação do Milvus em uma configuração distribuída no Kubernetes desbloqueia recursos poderosos para gerenciar dados vetoriais em grande escala, permitindo escalabilidade contínua e aplicativos orientados por IA de alto desempenho. Seguindo este guia, você aprendeu como configurar o Milvus usando o Milvus Operator, tornando o processo simplificado e eficiente.

À medida que você continua a explorar o Milvus, considere dimensionar seu cluster para atender às demandas crescentes ou implantá-lo em plataformas de nuvem, como Amazon EKS, Google Cloud ou Microsoft Azure. Para uma gestão e monitorização melhoradas, ferramentas como o Milvus Backup, Birdwatcher e Attu oferecem um suporte valioso para manter a saúde e o desempenho das suas implementações.

Agora você está pronto para aproveitar todo o potencial do Milvus no Kubernetes - feliz implantação! 🚀

Recursos adicionais

Like the article? Spread the word

Continue Lendo