Exécuter Milvus dans Kubernetes avec Milvus Operator
Cette page explique comment démarrer une instance Milvus dans Kubernetes à l'aide de Milvus Operator.
Vue d'ensemble
Milvus Operator est une solution qui vous aide à déployer et à gérer une pile de services Milvus complète pour cibler les clusters Kubernetes (K8s). La pile comprend tous les composants Milvus et les dépendances pertinentes telles que etcd, Pulsar et MinIO.
Conditions préalables
Installer une StorageClass. Vous pouvez vérifier la StorageClass installée comme suit.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false
Vérifier la configuration matérielle et logicielle requise avant l'installation.
Avant d'installer Milvus, il est recommandé d'utiliser l'outil de dimensionnement Milvus pour estimer la configuration matérielle requise en fonction de la taille de vos données. Cela permet de garantir des performances et une allocation de ressources optimales pour l'installation de Milvus.
Si vous rencontrez des problèmes en tirant l'image, contactez-nous à l'adresse community@zilliz.com en précisant le problème, et nous vous fournirons l'assistance nécessaire.
Installer l'opérateur Milvus
Milvus Operator définit les ressources personnalisées d'un cluster Milvus au-dessus des ressources personnalisées de Kubernetes. Lorsque des ressources personnalisées sont définies, vous pouvez utiliser les API K8s de manière déclarative et gérer la pile de déploiement Milvus pour garantir son évolutivité et sa haute disponibilité.
1. Installer cert-manager
Milvus Operator utilise cert-manager pour fournir un certificat au serveur webhook.
- Vous pouvez ignorer cette étape si vous choisissez de déployer Milvus Operator à l'aide de Helm.
- Milvus Operator nécessite cert-manager 1.1.3 ou supérieur.
Exécutez la commande suivante pour installer cert-manager.
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
Une fois le processus d'installation terminé, vous obtiendrez un résultat similaire au suivant.
customresourcedefinition.apiextensions.k8s.io/certificaterequests.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/certificates.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/challenges.acme.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/clusterissuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/issuers.cert-manager.io created
customresourcedefinition.apiextensions.k8s.io/orders.acme.cert-manager.io created
namespace/cert-manager created
serviceaccount/cert-manager-cainjector created
...
service/cert-manager created
service/cert-manager-webhook created
deployment.apps/cert-manager-cainjector created
deployment.apps/cert-manager created
deployment.apps/cert-manager-webhook created
mutatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
validatingwebhookconfiguration.admissionregistration.k8s.io/cert-manager-webhook created
Vous pouvez vérifier si les pods de cert-manager sont en cours d'exécution en procédant comme suit :
$ kubectl get pods -n cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-848f547974-gccz8 1/1 Running 0 70s
cert-manager-cainjector-54f4cc6b5-dpj84 1/1 Running 0 70s
cert-manager-webhook-7c9588c76-tqncn 1/1 Running 0 70s
2. Installer Milvus Operator
Vous pouvez installer Milvus Operator de l'une des manières suivantes :
Installation avec Helm
Exécutez la commande suivante pour installer Milvus Operator avec Helm.
$ helm install milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.0.1/milvus-operator-1.0.1.tgz
Une fois le processus d'installation terminé, vous obtiendrez un résultat similaire à celui qui suit.
NAME: milvus-operator
LAST DEPLOYED: Thu Jul 7 13:18:40 2022
NAMESPACE: milvus-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Milvus Operator Is Starting, use `kubectl get -n milvus-operator deploy/milvus-operator` to check if its successfully installed
If Operator not started successfully, check the checker's log with `kubectl -n milvus-operator logs job/milvus-operator-checker`
Full Installation doc can be found in https://github.com/zilliztech/milvus-operator/blob/main/docs/installation/installation.md
Quick start with `kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_minimum.yaml`
More samples can be found in https://github.com/zilliztech/milvus-operator/tree/main/config/samples
CRD Documentation can be found in https://github.com/zilliztech/milvus-operator/tree/main/docs/CRD
Installation avec kubectl
Exécutez la commande suivante pour installer Milvus Operator avec kubectl
.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
Vous obtiendrez un résultat similaire à ce qui suit à la fin du processus d'installation.
namespace/milvus-operator created
customresourcedefinition.apiextensions.k8s.io/milvusclusters.milvus.io created
serviceaccount/milvus-operator-controller-manager created
role.rbac.authorization.k8s.io/milvus-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/milvus-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/milvus-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-proxy-rolebinding created
configmap/milvus-operator-manager-config created
service/milvus-operator-controller-manager-metrics-service created
service/milvus-operator-webhook-service created
deployment.apps/milvus-operator-controller-manager created
certificate.cert-manager.io/milvus-operator-serving-cert created
issuer.cert-manager.io/milvus-operator-selfsigned-issuer created
mutatingwebhookconfiguration.admissionregistration.k8s.io/milvus-operator-mutating-webhook-configuration created
validatingwebhookconfiguration.admissionregistration.k8s.io/milvus-operator-validating-webhook-configuration created
Vous pouvez vérifier si le pod Milvus Operator est en cours d'exécution comme suit :
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
Déployer Milvus
1. Déployer un cluster Milvus
Une fois que le pod Milvus Operator fonctionne, vous pouvez déployer un cluster Milvus comme suit.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
La commande ci-dessus déploie un cluster Milvus avec ses composants et dépendances dans des pods séparés en utilisant les configurations par défaut. Pour personnaliser ces paramètres, nous vous recommandons d'utiliser l'outil de dimensionnement Milvus pour ajuster les configurations en fonction de la taille réelle de vos données, puis de télécharger le fichier YAML correspondant. Pour en savoir plus sur les paramètres de configuration, reportez-vous à la liste de contrôle des configurations du système Milvus.
- Le nom de la version ne doit contenir que des lettres, des chiffres et des tirets. Les points ne sont pas autorisés dans le nom de la version.
- Vous pouvez également déployer une instance Milvus en mode autonome, où tous ses composants sont contenus dans un seul pod. Pour ce faire, modifiez l'URL du fichier de configuration dans la commande ci-dessus en
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. Vérifier l'état du cluster Milvus
Exécutez la commande suivante pour vérifier l'état du cluster Milvus
$ kubectl get milvus my-release -o yaml
Une fois que votre cluster Milvus est prêt, la sortie de la commande ci-dessus devrait être similaire à ce qui suit. Si le champ status.status
reste à Unhealthy
, votre cluster Milvus est toujours en cours de création.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
conditions:
- lastTransitionTime: "2021-11-02T05:59:41Z"
reason: StorageReady
status: "True"
type: StorageReady
- lastTransitionTime: "2021-11-02T06:06:23Z"
message: Pulsar is ready
reason: PulsarReady
status: "True"
type: PulsarReady
- lastTransitionTime: "2021-11-02T05:59:41Z"
message: Etcd endpoints is healthy
reason: EtcdReady
status: "True"
type: EtcdReady
- lastTransitionTime: "2021-11-02T06:12:36Z"
message: All Milvus components are healthy
reason: MilvusClusterHealthy
status: "True"
type: MilvusReady
endpoint: my-release-milvus.default:19530
status: Healthy
Milvus Operator crée les dépendances Milvus, telles que etcd, Pulsar et MinIO, puis les composants Milvus, tels que le proxy, les coordinateurs et les nœuds.
Une fois que votre cluster Milvus est prêt, l'état de tous les pods dans le cluster Milvus doit être similaire à ce qui suit.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 14m
my-release-etcd-1 1/1 Running 0 14m
my-release-etcd-2 1/1 Running 0 14m
my-release-milvus-datanode-5c686bd65-wxtmf 1/1 Running 0 6m
my-release-milvus-indexnode-5b9787b54-xclbx 1/1 Running 0 6m
my-release-milvus-proxy-84f67cdb7f-pg6wf 1/1 Running 0 6m
my-release-milvus-querynode-5bcb59f6-nhqqw 1/1 Running 0 6m
my-release-milvus-mixcoord-fdcccfc84-9964g 1/1 Running 0 6m
my-release-minio-0 1/1 Running 0 14m
my-release-minio-1 1/1 Running 0 14m
my-release-minio-2 1/1 Running 0 14m
my-release-minio-3 1/1 Running 0 14m
my-release-pulsar-bookie-0 1/1 Running 0 14m
my-release-pulsar-bookie-1 1/1 Running 0 14m
my-release-pulsar-bookie-init-h6tfz 0/1 Completed 0 14m
my-release-pulsar-broker-0 1/1 Running 0 14m
my-release-pulsar-broker-1 1/1 Running 0 14m
my-release-pulsar-proxy-0 1/1 Running 0 14m
my-release-pulsar-proxy-1 1/1 Running 0 14m
my-release-pulsar-pulsar-init-d2t56 0/1 Completed 0 14m
my-release-pulsar-recovery-0 1/1 Running 0 14m
my-release-pulsar-toolset-0 1/1 Running 0 14m
my-release-pulsar-zookeeper-0 1/1 Running 0 14m
my-release-pulsar-zookeeper-1 1/1 Running 0 13m
my-release-pulsar-zookeeper-2 1/1 Running 0 13m
3. Transférer un port local vers Milvus
Exécutez la commande suivante pour obtenir le port auquel votre cluster Milvus sert.
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
La sortie montre que l'instance Milvus dessert le port par défaut 19530.
Si vous avez déployé Milvus en mode autonome, modifiez le nom du pod de my-release-milvus-proxy-xxxxxxxxxx-xxxxx
à my-release-milvus-xxxxxxxxxx-xxxxx
.
Ensuite, exécutez la commande suivante pour transférer un port local vers le port sur lequel Milvus fonctionne.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
En option, vous pouvez utiliser :19530
au lieu de 27017:19530
dans la commande ci-dessus pour permettre à kubectl
d'allouer un port local pour vous afin que vous n'ayez pas à gérer les conflits de port.
Par défaut, le port-forwarding de kubectl n'écoute que sur localhost
. Utilisez l'indicateur address
si vous souhaitez que Milvus écoute sur l'adresse IP sélectionnée ou sur toutes les adresses IP. La commande suivante permet à port-forward d'écouter toutes les adresses IP de la machine hôte.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
Désinstaller Milvus
Exécutez la commande suivante pour désinstaller le cluster Milvus.
$ kubectl delete milvus my-release
- Lorsque vous supprimez le cluster Milvus à l'aide de la configuration par défaut, les dépendances telles que etcd, Pulsar et MinIO ne sont pas supprimées. Par conséquent, la prochaine fois que vous installerez la même instance de cluster Milvus, ces dépendances seront à nouveau utilisées.
- Pour supprimer les dépendances et les nuages virtuels privés (PVC) avec le cluster Milvus, voir le fichier de configuration.
Désinstaller Milvus Operator
Il existe également deux façons de désinstaller Milvus Operator.
Désinstallation avec Helm
$ helm -n milvus-operator uninstall milvus-operator
Désinstallation avec kubectl
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.0.1/deploy/manifests/deployment.yaml
Ce qui suit
Après avoir installé Milvus dans Docker, vous pouvez :
Vérifier Hello Milvus pour voir ce que Milvus peut faire.
Apprendre les opérations de base de Milvus :
Déployer votre cluster Milvus sur des clouds :
Découvrez Milvus Backup, un outil open-source pour les sauvegardes de données Milvus.
Découvrez Birdwatcher, un outil open-source pour le débogage de Milvus et les mises à jour dynamiques de la configuration.
Découvrez Attu, un outil GUI open-source pour la gestion intuitive de Milvus.