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

milvus-logo
LFAI
  • Home
  • Blog
  • Como modificar as configurações avançadas do Milvus

Como modificar as configurações avançadas do Milvus

  • Engineering
November 08, 2021
Zilliz

Yufen Zong, engenheira de desenvolvimento de testes da Zilliz, licenciou-se na Universidade de Ciência e Tecnologia de Huazhong com um mestrado em tecnologia informática. Atualmente, está envolvida na garantia de qualidade da base de dados vetorial Milvus, incluindo, mas não se limitando a, testes de integração de interfaces, testes SDK, testes de referência, etc. Yufen é uma entusiasta da resolução de problemas nos testes e no desenvolvimento do Milvus e uma grande fã da teoria da engenharia do caos e da prática da simulação de falhas.

Antecedentes

Ao utilizar a base de dados vetorial Milvus, será necessário modificar a configuração por defeito para satisfazer os requisitos de diferentes cenários. Anteriormente, um usuário Milvus compartilhou em Como modificar a configuração do Milvus implantado usando o Docker Compose. E neste artigo, gostaria de compartilhar com você sobre como modificar a configuração do Milvus implantado no Kubernetes.

Modificar a configuração do Milvus no Kubernetes

Pode escolher diferentes planos de modificação de acordo com os parâmetros de configuração que deseja modificar. Todos os ficheiros de configuração do Milvus são armazenados em milvus/configs. Ao instalar o Milvus no Kubernetes, um repositório Milvus Helm Chart será adicionado localmente. Ao executar helm show values milvus/milvus, pode verificar os parâmetros que podem ser modificados diretamente com o Gráfico. Para os parâmetros modificáveis com o Chart, você pode passar o parâmetro usando --values ou --set. Para mais informações, consulte Milvus Helm Chart e Helm.

Se os parâmetros que pretende modificar não estiverem na lista, pode seguir as instruções abaixo.

Nas etapas a seguir, o parâmetro rootcoord.dmlChannelNum em /milvus/configs/advanced/root_coord.yaml deve ser modificado para fins de demonstração. O gerenciamento de arquivos de configuração do Milvus no Kubernetes é implementado através do objeto de recurso ConfigMap. Para alterar o parâmetro, você deve primeiro atualizar o objeto ConfigMap da versão Chart correspondente e, em seguida, modificar os arquivos de recursos de implantação dos pods correspondentes.

Tenha em atenção que este método apenas se aplica à modificação de parâmetros na aplicação Milvus implementada. Para modificar os parâmetros em /milvus/configs/advanced/*.yaml antes da implementação, terá de voltar a desenvolver o Milvus Helm Chart.

Modificar o ConfigMap YAML

Como mostrado abaixo, sua versão do Milvus em execução no Kubernetes corresponde a um objeto ConfigMap com o mesmo nome da versão. A secção data do objeto ConfigMap inclui apenas configurações em milvus.yaml. Para alterar o rootcoord.dmlChannelNum em root_coord.yaml, tem de adicionar os parâmetros em root_coord.yaml à secção data no YAML do ConfigMap e alterar o parâmetro específico.

kind: ConfigMap
apiVersion: v1
metadata:
  name: milvus-chaos
  ...
data:
  milvus.yaml: >
    ......
  root_coord.yaml: |
    rootcoord:
      dmlChannelNum: 128
      maxPartitionNum: 4096
      minSegmentSizeToEnableIndex: 1024
      timeout: 3600 # time out, 5 seconds
      timeTickInterval: 200 # ms

Modificar o YAML de implantação

Os dados armazenados em um ConfigMap podem ser referenciados em um volume do tipo configMap e, em seguida, consumidos por aplicativos em contêineres executados em um pod. Para direcionar os pods para os novos arquivos de configuração, você deve modificar os modelos de pod que precisam carregar as configurações em root_coord.yaml. Especificamente, você precisa adicionar uma declaração de montagem na seção spec.template.spec.containers.volumeMounts no YAML de implantação.

Tomando o YAML de implantação do pod rootcoord como um exemplo, um volume do tipo configMap chamado milvus-config é especificado na seção .spec.volumes. E, na secção spec.template.spec.containers.volumeMounts, o volume é declarado para montar milvus.yaml do seu lançamento Milvus em /milvus/configs/milvus.yaml. Da mesma forma, só precisa de adicionar uma declaração de montagem especificamente para o contentor rootcoord para montar o root_coord.yaml em /milvus/configs/advanced/root_coord.yaml, e assim o contentor pode aceder ao novo ficheiro de configuração.

spec:
  replicas: 1
  selector:
    ......
  template:
    metadata:
      ...
    spec:
      volumes:
        - name: milvus-config
          configMap:
            name: milvus-chaos
            defaultMode: 420
      containers:
        - name: rootcoord
          image: 'milvusdb/milvus-dev:master-20210906-86afde4'
          args:
            ...
          ports:
            ...
          resources: {}
          volumeMounts:
            - name: milvus-config
              readOnly: true
              mountPath: /milvus/configs/milvus.yaml
              subPath: milvus.yaml
            - name: milvus-config
              readOnly: true
              mountPath: /milvus/configs/advanced/`root_coord.yaml
              subPath: root_coord.yaml
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      securityContext: {}
      schedulerName: default-scheduler

Verificar o resultado

O kubelet verifica se o ConfigMap montado é novo em cada sincronização periódica. Quando o ConfigMap consumido no volume é atualizado, as chaves projetadas também são atualizadas automaticamente. Quando o novo pod estiver em execução novamente, você poderá verificar se a modificação foi bem-sucedida no pod. Os comandos para verificar o parâmetro rootcoord.dmlChannelNum são compartilhados abaixo.

$ kctl exec -ti milvus-chaos-rootcoord-6f56794f5b-xp2zs -- sh
# cd configs/advanced
# pwd
/milvus/configs/advanced
# ls
channel.yaml  common.yaml  data_coord.yaml  data_node.yaml  etcd.yaml  proxy.yaml  query_node.yaml  root_coord.yaml
# cat root_coord.yaml
rootcoord:
  dmlChannelNum: 128
  maxPartitionNum: 4096
  minSegmentSizeToEnableIndex: 1024
  timeout: 3600 # time out, 5 seconds
  timeTickInterval: 200 # ms
# exit

Acima está o método para modificar as configurações avançadas no Milvus implantado no Kubernetes. A versão futura do Milvus integrará todas as configurações em um arquivo e suportará a atualização da configuração via helm chart. Mas antes disso, espero que este artigo possa ajudar-te como uma solução temporária.

Envolva-se com a nossa comunidade open-source:

  • Encontre ou contribua para o Milvus no GitHub.

  • Interaja com a comunidade através do Fórum.

  • Ligue-se a nós no Twitter.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Continue Lendo