🚀 Prova Zilliz Cloud, la versione completamente gestita di Milvus, gratuitamente—sperimenta prestazioni 10 volte più veloci! Prova Ora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Come modificare le configurazioni avanzate di Milvus

Come modificare le configurazioni avanzate di Milvus

  • Engineering
November 08, 2021
Zilliz

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:

  • Trovate o contribuite a Milvus su GitHub.

  • Interagite con la comunità tramite il forum.

  • Collegatevi con noi su 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

Continua a Leggere