Comment modifier les configurations avancées de Milvus ?
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 :
- Contexte
- Modifier la configuration de Milvus sur Kubernetes
- Participez à notre communauté 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