Executar o Milvus no Kubernetes com o Milvus Operator
Esta página ilustra como iniciar uma instância do Milvus no Kubernetes usando o Milvus Operator.
Visão geral
O Milvus Operator é uma solução que ajuda a implantar e gerenciar uma pilha completa de serviços Milvus para atingir os clusters Kubernetes (K8s). A pilha inclui todos os componentes do Milvus e dependências relevantes, como etcd, Pulsar e MinIO.
Pré-requisitos
Instalar um StorageClass. É possível verificar a StorageClass instalada da seguinte forma.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false
Verificar 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 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 Operator
O Milvus Operator define recursos personalizados de um cluster Milvus em cima dos 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.
1. Instalar o cert-manager
O Milvus Operator utiliza o cert-manager para fornecer um certificado para o servidor webhook.
- Pode saltar este passo com segurança se optar por implementar o Milvus Operator utilizando o Helm.
- O Milvus Operator requer o cert-manager 1.1.3 ou superior.
Execute o seguinte comando para instalar o cert-manager.
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
Verá um resultado semelhante ao seguinte após a conclusão do processo de instalação.
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
Pode verificar se os pods do cert-manager estão a ser executados da seguinte forma:
$ 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 o Milvus Operator
Você pode instalar o Milvus Operator de uma das seguintes maneiras:
Instalar com o Helm
Execute o seguinte comando 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.0.1/milvus-operator-1.0.1.tgz
Verá uma saída semelhante à 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
Instalar com o kubectl
Execute o seguinte comando para instalar o Milvus Operator com kubectl
.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Você verá uma saída semelhante à seguinte após o término do processo de instalação.
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
Você pode verificar se o pod do Milvus Operator está em execução da seguinte forma:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
Implantar o Milvus
1. Implantar um cluster do Milvus
Depois que o pod do Milvus Operator estiver em execução, você poderá implantar um cluster do Milvus da seguinte maneira.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
O comando acima implanta um cluster do Milvus com seus componentes e dependências em pods separados usando configurações padrão. Para personalizar estas definições, recomendamos que utilize a Milvus Sizing Tool para ajustar as configurações com base no tamanho real dos dados e, em seguida, transfira o ficheiro YAML correspondente. Para saber mais sobre os parâmetros de configuração, consulte a Lista de verificação das configurações do sistema Milvus.
- O nome da versão deve conter apenas letras, números e traços. Os pontos não são permitidos no nome da versão.
- Também é possível implantar uma instância do Milvus no modo autônomo, em que todos os seus componentes estão contidos em um único pod. Para o fazer, 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 Milvus
$ kubectl get milvus my-release -o yaml
Quando o cluster do Milvus estiver pronto, a saída do comando acima deverá ser semelhante à seguinte. Se o campo status.status
permanecer Unhealthy
, o seu cluster Milvus ainda está a ser criado.
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
O Milvus Operator cria as dependências do Milvus, como etcd, Pulsar e MinIO, e depois os componentes do Milvus, como proxy, coordenadores e nós.
Quando o cluster do Milvus estiver pronto, o status de todos os pods no cluster do Milvus deverá ser semelhante ao seguinte.
$ 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. Encaminhar uma porta local para o Milvus
Execute o seguinte comando para obter a porta na qual o seu cluster Milvus serve.
$ 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 serve na porta padrão 19530.
Se você implantou 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 seguinte comando para encaminhar uma porta local para a porta em que o Milvus serve.
$ 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 kubectl
atribua uma porta local para si, para que não tenha de gerir conflitos de portas.
Por predefinição, o encaminhamento de portas do kubectl apenas escuta em localhost
. Use a flag address
se quiser que o Milvus escute nos endereços IP selecionados ou em todos. O comando a seguir faz com que o encaminhamento de porta escute em todos os endereços IP na máquina host.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Desinstalar o Milvus
Execute o seguinte comando para desinstalar o cluster do Milvus.
$ kubectl delete milvus my-release
- Quando você exclui o cluster do Milvus usando a configuração padrão, dependências como etcd, Pulsar e MinIO não são excluídas. Portanto, da próxima vez que instalar a mesma instância do cluster Milvus, essas dependências serão usadas novamente.
- Para eliminar as dependências e as nuvens virtuais privadas (PVCs) juntamente com o cluster Milvus, consulte o ficheiro de configuração.
Desinstalar o Milvus Operator
Há também duas maneiras de desinstalar o Milvus Operator.
Desinstalar com Helm
$ helm -n milvus-operator uninstall milvus-operator
Desinstalar com kubectl
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.0.1/deploy/manifests/deployment.yaml
O que vem a seguir
Tendo instalado 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 Milvu em nuvens:
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 dinâmicas de configuração.
Explore o Attu, uma ferramenta GUI de código aberto para gerenciamento intuitivo do Milvus.