تشغيل Milvus في Kubernetes باستخدام Milvus Operator
توضح هذه الصفحة كيفية تشغيل مثيل Milvus في Kubernetes باستخدام Milvus Operator.
نظرة عامة
Milvus Operator هو حل يساعدك على نشر وإدارة مجموعة خدمات Milvus الكاملة لاستهداف مجموعات Kubernetes (K8s). تتضمن المجموعة جميع مكونات Milvus والتبعيات ذات الصلة مثل etcd و MinIO، مع استخدام Woodpecker كقائمة انتظار الرسائل المدمجة.
المتطلبات
تثبيت StorageClass. يمكنك التحقق من StorageClass المثبتة على النحو التالي.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate falseتحقق من متطلبات الأجهزة والبرامج قبل التثبيت.
قبل تثبيت Milvus، يُنصح باستخدام أداة تحديد حجم Milvus لتقدير متطلبات الأجهزة بناءً على حجم بياناتك. يساعد ذلك في ضمان الأداء الأمثل وتخصيص الموارد لتثبيت Milvus الخاص بك.
إذا واجهت أي مشكلات في سحب الصورة، فاتصل بنا على community@zilliz.com مع تفاصيل حول المشكلة، وسنقدم لك الدعم اللازم.
تثبيت Milvus Operator
يُعرّف Milvus Operator الموارد المخصصة لعنقودة Milvus فوق الموارد المخصصة لـ Kubernetes. عند تعريف الموارد المخصصة، يمكنك استخدام واجهات برمجة تطبيقات K8s بطريقة إعلانية وإدارة مكدس نشر Milvus لضمان قابليته للتوسع وتوافره العالي.
قم بتشغيل الأمر التالي لتثبيت Milvus Operator باستخدام Helm.
$ helm install milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
سترى ناتجًا مشابهًا لما يلي بعد انتهاء عملية التثبيت.
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
إذا كنت قد قمت بتثبيت Milvus Operator من قبل، فقم بترقيته باستخدام الأمر التالي:
helm upgrade milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
قم بتشغيل الأمر التالي لتثبيت Milvus Operator باستخدام kubectl.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
سترى ناتجًا مشابهًا لما يلي بعد انتهاء عملية التثبيت.
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
يمكنك التحقق مما إذا كان pod Milvus Operator قيد التشغيل على النحو التالي:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
نشر Milvus
1. نشر مجموعة Milvus
بمجرد تشغيل pod Milvus Operator، يمكنك نشر مجموعة Milvus على النحو التالي.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_woodpecker.yaml
يقوم الأمر أعلاه بنشر مجموعة Milvus باستخدام Woodpecker كقائمة انتظار الرسائل (موصى به للإصدار v3.0.2) وجميع المكونات المعمارية الجديدة بما في ذلك Streaming Node.
أبرز ميزات البنية في هذا النشر:
- قائمة انتظار الرسائل: تستخدم Woodpecker (تقلل من صيانة البنية التحتية)
- عقدة البث (Streaming Node): تم تمكينها لتحسين معالجة البيانات
- منسق المزج (Mix Coordinator): مكونات منسق مدمجة لتحسين الكفاءة
لتخصيص هذه الإعدادات، نوصيك باستخدام أداة تحديد حجم Milvus (Milvus Sizing Tool) لضبط التكوينات بناءً على حجم البيانات الفعلي لديك، ثم تنزيل ملف YAML المقابل. لمعرفة المزيد عن معلمات التكوين، راجع قائمة مراجعة تكوينات نظام Milvus.
- يجب أن يحتوي اسم الإصدار على أحرف وأرقام وشرطات فقط. لا يُسمح باستخدام النقاط في اسم الإصدار.
- يمكنك أيضًا نشر مثيل Milvus في الوضع المستقل، حيث تكون جميع مكوناته موجودة داخل بود واحد. للقيام بذلك، قم بتغيير عنوان URL لملف التكوين في الأمر أعلاه إلى
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. التحقق من حالة مجموعة Milvus
قم بتشغيل الأمر التالي للتحقق من حالة مجموعة Milvus
$ kubectl get milvus my-release -o yaml
بمجرد أن تصبح مجموعة Milvus جاهزة، يجب أن يكون ناتج الأمر أعلاه مشابهًا لما يلي. إذا ظل حقل « status.status » (حالة المجموعة) على « Unhealthy » (قيد الإنشاء)، فإن مجموعة Milvus الخاصة بك لا تزال قيد الإنشاء.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
conditions:
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
reason: StorageReady
status: "True"
type: StorageReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: Etcd endpoints is healthy
reason: EtcdReady
status: "True"
type: EtcdReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: All Milvus components are healthy
reason: MilvusClusterHealthy
status: "True"
type: MilvusReady
endpoint: my-release-milvus.default:19530
status: Healthy
يقوم Milvus Operator بإنشاء تبعيات Milvus، مثل etcd و MinIO، ثم مكونات Milvus، مثل الوكيل (proxy) والمنسقين (coordinators) والعقد (nodes).
بمجرد أن تصبح مجموعة Milvus جاهزة، يجب أن تكون حالة جميع البودات في مجموعة Milvus مشابهة لما يلي.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m36s
my-release-etcd-1 1/1 Running 0 2m36s
my-release-etcd-2 1/1 Running 0 2m36s
my-release-milvus-datanode-58955c65b9-j4j7s 1/1 Running 0 92s
my-release-milvus-mixcoord-686f84968f-jcv5d 1/1 Running 0 92s
my-release-milvus-proxy-646f48fc7c-4lctb 1/1 Running 0 92s
my-release-milvus-querynode-0-d89d7677b-x7j7q 1/1 Running 0 91s
my-release-milvus-streamingnode-556bdcc87c-2qwcc 1/1 Running 0 92s
my-release-minio-0 1/1 Running 0 2m36s
my-release-minio-1 1/1 Running 0 2m36s
my-release-minio-2 1/1 Running 0 2m35s
my-release-minio-3 1/1 Running 0 2m35s
3. إعادة توجيه منفذ محلي إلى Milvus
قم بتشغيل الأمر التالي للحصول على المنفذ الذي تعمل عليه مجموعة Milvus الخاصة بك.
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
يُظهر الناتج أن مثيل Milvus يعمل على المنفذ الافتراضي 19530.
إذا كنت قد قمت بنشر Milvus في الوضع المستقل، فقم بتغيير اسم البود من my-release-milvus-proxy-xxxxxxxxxx-xxxxx إلى my-release-milvus-xxxxxxxxxx-xxxxx.
ثم، قم بتشغيل الأمر التالي لإعادة توجيه منفذ محلي إلى المنفذ الذي تعمل عليه Milvus.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
اختياريًا، يمكنك استخدام :19530 بدلاً من 27017:19530 في الأمر أعلاه للسماح لـ kubectl بتخصيص منفذ محلي لك حتى لا تضطر إلى إدارة تعارضات المنافذ.
بشكل افتراضي، لا يستمع توجيه المنافذ في kubectl إلا على localhost. استخدم العلامة address إذا كنت تريد أن يستمع Milvus على عناوين IP المحددة أو جميعها. يجعل الأمر التالي توجيه المنافذ يستمع على جميع عناوين IP على الجهاز المضيف.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
الآن، يمكنك الاتصال بـ Milvus باستخدام المنفذ المُحوَّل.
(اختياري) تحديث تكوينات Milvus
يمكنك عرض تحديث تكوينات مجموعة Milvus الخاصة بك عن طريق استدعاء الأمر patch كما يلي:
قم بتشغيل الأمر التالي لمعاينة الإعدادات المقترحة.
يفترض ما يلي أنك تريد تحديث معلمة
spec.components.disableMetricإلىfalsems.$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}' \ --dry-run=client -o yamlللاطلاع على عناصر التكوين ذات الصلة، راجع «تكوين النظام».
قم بتحديث التكوينات.
$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}'
الوصول إلى واجهة المستخدم الرسومية لـ Milvus
يأتي Milvus مزودًا بأداة واجهة مستخدم رسومية مدمجة تسمى Milvus WebUI يمكنك الوصول إليها من خلال متصفحك. تعمل واجهة المستخدم الويب Milvus على تحسين قابلية مراقبة النظام بواجهة بسيطة وبديهية. يمكنك استخدام واجهة المستخدم الويب Milvus لمراقبة الإحصائيات والمقاييس الخاصة بمكونات Milvus وتبعياته، والتحقق من تفاصيل قاعدة البيانات والتجميعات، وإدراج قائمة بتكوينات Milvus التفصيلية. للحصول على تفاصيل حول واجهة المستخدم الرسومية لـ Milvus، راجع واجهة المستخدم الرسومية لـ Milvus
لتمكين الوصول إلى واجهة المستخدم على الويب لـ Milvus، تحتاج إلى إعادة توجيه منفذ pod الوكيل إلى منفذ محلي.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091
الآن، يمكنك الوصول إلى واجهة المستخدم على الويب لـ Milvus على http://localhost:27018.
إلغاء تثبيت Milvus
قم بتشغيل الأمر التالي لإلغاء تثبيت مجموعة Milvus.
$ kubectl delete milvus my-release
- عند حذف مجموعة Milvus باستخدام التكوين الافتراضي، لا يتم حذف التبعيات مثل etcd و MinIO. لذلك، في المرة التالية التي تقوم فيها بتثبيت نفس مثيل مجموعة Milvus، سيتم استخدام هذه التبعيات مرة أخرى.
- لحذف التبعيات ومطالبات وحدات التخزين الدائمة (PVCs) مع مجموعة Milvus، راجع ملف التكوين.
إلغاء تثبيت Milvus Operator
هناك أيضًا طريقتان لإلغاء تثبيت Milvus Operator.
إلغاء التثبيت باستخدام Helm
$ helm -n milvus-operator uninstall milvus-operator
إلغاء التثبيت باستخدام kubectl
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml
التبعيات الاختيارية
يستخدم هذا النشر Woodpecker كقائمة انتظار الرسائل، وetcd للبيانات الوصفية، وMinIO لتخزين الكائنات، وجميعها يتم توفيرها بواسطة Milvus Operator. لاستخدام بنية خلفية مختلفة مع Operator، انظر:
- قائمة انتظار الرسائل: Woodpecker (افتراضي) · Pulsar · Kafka · RocksMQ
- تخزين الكائنات: تكوين تخزين الكائنات باستخدام Milvus Operator
- البيانات الوصفية: تكوين etcd باستخدام Milvus Operator
يتم تعطيل Storage V3 افتراضيًا. قم بتمكينه قبل استخدام الميزات التي تعتمد عليه. للاطلاع على المتطلبات واعتبارات التوافق، راجع Storage V3.
الخطوة التالية
بعد تثبيت Milvus في Docker، يمكنك:
تحقق من Hello Milvus لمعرفة ما يمكن لـ Milvus القيام به.
تعلم العمليات الأساسية لـ Milvus:
نشر مجموعة Milvus الخاصة بك على السحابة:
استكشف Milvus WebUI، وهي واجهة ويب سهلة الاستخدام لمراقبة وإدارة Milvus.
اكتشف Milvus Backup، وهي أداة مفتوحة المصدر لنسخ بيانات Milvus احتياطيًا.
اكتشف Birdwatcher، وهي أداة مفتوحة المصدر لتصحيح أخطاء Milvus وتحديثات التكوين الديناميكية.
اكتشف Attu، وهي أداة واجهة مستخدم رسومية مفتوحة المصدر لإدارة Milvus بطريقة بديهية.