Come modificare le configurazioni avanzate di Milvus
Yufen Zong, Test Development Engineer di Zilliz, si è laureata presso la Huazhong University of Science and Technology con un master in tecnologia informatica. Attualmente si occupa della garanzia di qualità del database vettoriale Milvus, compresi, ma non solo, i test di integrazione dell'interfaccia, i test SDK, i test di benchmark, ecc. Yufen è un'appassionata di risoluzione dei problemi nei test e nello sviluppo di Milvus, nonché una grande fan della teoria dell'ingegneria del caos e della pratica di perforazione degli errori.
Il contesto
Quando si utilizza il database vettoriale di Milvus, è necessario modificare la configurazione predefinita per soddisfare i requisiti di diversi scenari. In precedenza, un utente di Milvus ha condiviso Come modificare la configurazione di Milvus distribuito utilizzando Docker Compose. In questo articolo, vorrei condividere con voi come modificare la configurazione di Milvus distribuito su Kubernetes.
Modificare la configurazione di Milvus su Kubernetes
È possibile scegliere diversi piani di modifica in base ai parametri di configurazione che si desidera modificare. Tutti i file di configurazione di Milvus sono memorizzati in milvus/configs. Durante l'installazione di Milvus su Kubernetes, viene aggiunto localmente un repository Milvus Helm Chart. Eseguendo helm show values milvus/milvus
, è possibile controllare i parametri che possono essere modificati direttamente con Chart. Per i parametri modificabili con Chart, è possibile passare il parametro utilizzando --values
o --set
. Per ulteriori informazioni, vedere Milvus Helm Chart e Helm.
Se i parametri che si desidera modificare non sono presenti nell'elenco, è possibile seguire le istruzioni riportate di seguito.
Nei passi seguenti, il parametro rootcoord.dmlChannelNum
in /milvus/configs/advanced/root_coord.yaml deve essere modificato a scopo dimostrativo. La gestione dei file di configurazione di Milvus su Kubernetes è implementata attraverso l'oggetto risorsa ConfigMap. Per modificare il parametro, si deve prima aggiornare l'oggetto ConfigMap della corrispondente release di Chart e poi modificare i file delle risorse di distribuzione dei pod corrispondenti.
Attenzione: questo metodo si applica solo alla modifica dei parametri dell'applicazione Milvus distribuita. Per modificare i parametri in /milvus/configs/advanced/*.yaml prima della distribuzione, è necessario sviluppare nuovamente il diagramma di Milvus Helm.
Modificare la ConfigMap YAML
Come mostrato di seguito, la release di Milvus in esecuzione su Kubernetes corrisponde a un oggetto ConfigMap con lo stesso nome della release. La sezione data
dell'oggetto ConfigMap include solo le configurazioni in milvus.yaml. Per modificare rootcoord.dmlChannelNum
in root_coord.yaml, è necessario aggiungere i parametri di root_coord.yaml alla sezione data
nello YAML di ConfigMap e modificare il parametro specifico.
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
Modifica dello YAML di distribuzione
I dati memorizzati in una ConfigMap possono essere referenziati in un volume di tipo configMap e quindi consumati dalle applicazioni containerizzate in esecuzione in un pod. Per indirizzare i pod ai nuovi file di configurazione, è necessario modificare i modelli di pod che devono caricare le configurazioni in root_coord.yaml. In particolare, è necessario aggiungere una dichiarazione di mount nella sezione spec.template.spec.containers.volumeMounts
dello YAML di distribuzione.
Prendendo come esempio lo YAML di deployment del pod rootcoord, nella sezione .spec.volumes
è specificato un volume di tipo configMap
chiamato milvus-config. Inoltre, nella sezione spec.template.spec.containers.volumeMounts
, il volume è dichiarato per montare milvus.yaml della propria release di Milvus su /milvus/configs/milvus.yaml. Allo stesso modo, è sufficiente aggiungere una dichiarazione di mount specifica per il contenitore rootcoord per montare il file root_coord.yaml su /milvus/configs/advanced/root_coord.yaml e quindi il contenitore può accedere al nuovo file di configurazione.
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
Verifica del risultato
Il kubelet controlla se il ConfigMap montato è fresco a ogni sincronizzazione periodica. Quando il ConfigMap consumato nel volume viene aggiornato, anche le chiavi proiettate vengono automaticamente aggiornate. Quando il nuovo pod è di nuovo in funzione, è possibile verificare se la modifica è avvenuta con successo nel pod. I comandi per verificare il parametro rootcoord.dmlChannelNum
sono condivisi di seguito.
$ 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
Questo è il metodo per modificare le configurazioni avanzate in Milvus distribuito su Kubernetes. La futura versione di Milvus integrerà tutte le configurazioni in un unico file e supporterà l'aggiornamento della configurazione tramite il grafico helm. Ma prima di allora, spero che questo articolo possa aiutarvi come soluzione temporanea.
Impegnatevi con la nostra comunità open-source:
- Il contesto
- Modificare la configurazione di Milvus su Kubernetes
- Impegnatevi con la nostra comunità 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