🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI
  • Home
  • Blog
  • Comment modifier les configurations avancées de Milvus ?

Comment modifier les configurations avancées de Milvus ?

  • Engineering
November 08, 2021
Zilliz

Yufen Zong, ingénieur en développement de tests chez Zilliz, est titulaire d'une maîtrise en technologie informatique de l'université des sciences et technologies de Huazhong. Elle s'occupe actuellement de l'assurance qualité de la base de données vectorielles Milvus, notamment des tests d'intégration des interfaces, des tests SDK, des tests d'évaluation des performances, etc. Yufen est une chercheuse de problèmes enthousiaste dans le cadre des essais et du développement de Milvus, et une grande fan de la théorie de l'ingénierie du chaos et de la pratique de l'exercice des fautes.

Contexte

Lors de l'utilisation de la base de données vectorielle Milvus, vous devrez modifier la configuration par défaut pour répondre aux exigences de différents scénarios. Précédemment, un utilisateur de Milvus a partagé comment modifier la configuration de Milvus déployé à l'aide de Docker Compose. Dans cet article, j'aimerais partager avec vous comment modifier la configuration de Milvus déployé sur Kubernetes.

Modifier la configuration de Milvus sur Kubernetes

Vous pouvez choisir différents plans de modification en fonction des paramètres de configuration que vous souhaitez modifier. Tous les fichiers de configuration de Milvus sont stockés sous milvus/configs. Lors de l'installation de Milvus sur Kubernetes, un dépôt Milvus Helm Chart sera ajouté localement. En exécutant helm show values milvus/milvus, vous pouvez vérifier les paramètres qui peuvent être modifiés directement avec Chart. Pour les paramètres modifiables avec Chart, vous pouvez passer le paramètre à l'aide de --values ou --set. Pour plus d'informations, voir Milvus Helm Chart et Helm.

Si les paramètres que vous souhaitez modifier ne figurent pas dans la liste, vous pouvez suivre les instructions ci-dessous.

Dans les étapes suivantes, le paramètre rootcoord.dmlChannelNum dans /milvus/configs/advanced/root_coord.yaml sera modifié à des fins de démonstration. La gestion des fichiers de configuration de Milvus sur Kubernetes est mise en œuvre par le biais de l'objet de ressource ConfigMap. Pour modifier le paramètre, vous devez d'abord mettre à jour l'objet ConfigMap de la version Chart correspondante, puis modifier les fichiers de ressources de déploiement des pods correspondants.

Attention, cette méthode ne s'applique qu'à la modification des paramètres de l'application Milvus déployée. Pour modifier les paramètres dans /milvus/configs/advanced/*.yaml avant le déploiement, vous devrez redévelopper le Milvus Helm Chart.

Modifier le ConfigMap YAML

Comme indiqué ci-dessous, votre version de Milvus exécutée sur Kubernetes correspond à un objet ConfigMap portant le même nom que la version. La section data de l'objet ConfigMap inclut uniquement les configurations dans milvus.yaml. Pour modifier le site rootcoord.dmlChannelNum dans root_coord.yaml, vous devez ajouter les paramètres de root_coord.yaml à la section data du ConfigMap YAML et modifier le paramètre spécifique.

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

Modifier le YAML de déploiement

Les données stockées dans un ConfigMap peuvent être référencées dans un volume de type configMap puis consommées par des applications conteneurisées s'exécutant dans un pod. Pour diriger les pods vers les nouveaux fichiers de configuration, vous devez modifier les modèles de pods qui ont besoin de charger les configurations dans root_coord.yaml. Plus précisément, vous devez ajouter une déclaration mount sous la section spec.template.spec.containers.volumeMounts dans le YAML de déploiement.

En prenant le YAML de déploiement du pod rootcoord comme exemple, un volume de type configMap nommé milvus-config est spécifié dans la section .spec.volumes. Et, dans la section spec.template.spec.containers.volumeMounts, le volume est déclaré pour monter milvus.yaml de votre version de Milvus sur /milvus/configs/milvus.yaml. De même, il suffit d'ajouter une déclaration de montage spécifique au conteneur rootcoord pour monter le fichier root_coord.yaml sur /milvus/configs/advanced/root_coord.yaml, et le conteneur peut ainsi accéder au nouveau fichier de configuration.

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

Vérifier le résultat

Le kubelet vérifie si la ConfigMap montée est fraîche à chaque synchronisation périodique. Lorsque la ConfigMap consommée dans le volume est mise à jour, les clés projetées sont automatiquement mises à jour également. Lorsque le nouveau pod fonctionne à nouveau, vous pouvez vérifier si la modification a été effectuée avec succès dans le pod. Les commandes pour vérifier le paramètre rootcoord.dmlChannelNum sont partagées ci-dessous.

$ 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

La méthode ci-dessus permet de modifier les configurations avancées dans Milvus déployé sur Kubernetes. La prochaine version de Milvus intégrera toutes les configurations dans un seul fichier et prendra en charge la mise à jour de la configuration via le diagramme helm. Mais avant cela, j'espère que cet article pourra vous aider en tant que solution temporaire.

Participez à notre communauté open-source :

  • Trouvez ou contribuez à Milvus sur GitHub.

  • Interagissez avec la communauté via le Forum.

  • Connectez-vous avec nous sur 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

Continuer à Lire