Fond
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 des différents scénarios. Auparavant, un utilisateur de Milvus a partagé sur Comment modifier la configuration de Milvus déployé à l’aide de Docker Compose. Et dans cet article, je voudrais 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 Milvus sont stockés sous Milvus/Configurations. Lors de l’installation de Milvus sur Kubernetes, un référentiel Milvus Helm Chart sera ajouté localement. En exécutant helm show values milvus/milvus
, vous pouvez vérifier les paramètres modifiables directement avec Chart. Pour les paramètres modifiables avec Chart, vous pouvez passer le paramètre en utilisant --values
ou --set
. Pour plus d’informations, voir Milvus Helm Chart et Helm.
Si les paramètres que vous prévoyez de 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 doit être modifié à des fins de démonstration. La gestion des fichiers de configuration de Milvus sur Kubernetes est implémentée via 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 sur les applications Milvus déployées. Pour modifier les paramètres dans /milvus/configs/advanced/*.yaml avant le déploiement, vous devrez re-développer le Milvus Helm Chart.
Modifier ConfigMap YAML
Comme indiqué ci-dessous, votre version Milvus exécutée sur Kubernetes correspond à un objet ConfigMap portant le même nom que la version. Les data
section de l’objet ConfigMap n’inclut que les configurations dans milvus.yaml. Pour changer le rootcoord.dmlChannelNum
dans root_coord.yaml, vous devez ajouter les paramètres dans root_coord.yaml à la data
section dans le ConfigMap YAML et modifiez 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 déploiement YAML
Les données stockées dans un ConfigMap peuvent être référencées dans un volume de type configMap et 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 doivent charger les configurations dans root_coord.yaml. Plus précisément, vous devez ajouter une déclaration de montage sous le spec.template.spec.containers.volumeMounts
section dans le déploiement YAML.
En prenant le déploiement YAML du pod rootcoord comme exemple, un configMap
tapez le volume nommé milvus-config est spécifié dans .spec.volumes
section. Et en spec.template.spec.containers.volumeMounts
section, le volume est déclaré à monter milvus.yaml de votre sortie Milvus le /milvus/configs/milvus.yaml. De même, il vous suffit d’ajouter une déclaration de montage spécifiquement pour le conteneur rootcoord pour monter le root_coord.yaml au /milvus/configs/advanced/root_coord.yaml, et ainsi le conteneur peut 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 le ConfigMap consommé dans le volume est mis à jour, les clés projetées sont également automatiquement mises à jour. Lorsque le nouveau pod s’exécute à nouveau, vous pouvez vérifier si la modification a réussi dans le pod. Commandes pour vérifier le paramètre rootcoord.dmlChannelNum
sont partagés 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
Ci-dessus se trouve la méthode pour modifier les configurations avancées dans Milvus déployées sur Kubernetes. La future version de Milvus intégrera toutes les configurations dans un seul fichier et prendra en charge la mise à jour de la configuration via le graphique de barre. Mais avant cela, j’espère que cet article pourra vous aider en tant que solution temporaire.
Engagez-vous avec notre communauté open source
- Trouvez ou contribuez à Milvus sur GitHub.
- Interagissez avec la communauté via le forum.
- Connectez-vous avec nous sur Twitter.