Como modificar as configurações avançadas do Milvus
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:
- Antecedentes
- Modificar a configuração do Milvus no Kubernetes
- Envolva-se com a nossa comunidade open-source:
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word