تشغيل Milvus في Kubernetes باستخدام Helm

توضح هذه الصفحة كيفية تشغيل مثيل Milvus في Kubernetes باستخدام مخططات Helm الخاصة بـ Milvus.

نظرة عامة

يستخدم Helm تنسيق حزم يُسمى "الرسوم البيانية". والرسوم البيانية عبارة عن مجموعة من الملفات التي تصف مجموعة ذات صلة من موارد Kubernetes. يوفر Milvus مجموعة من الرسوم البيانية لمساعدتك في نشر تبعيات ومكونات Milvus.

المتطلبات

  • تثبيت واجهة Helm CLI.

  • قم بإنشاء مجموعة K8s.

  • قم بتثبيت StorageClass. يمكنك التحقق من StorageClass المثبتة على النحو التالي.

    $ kubectl get sc
    
    NAME                  PROVISIONER                  RECLAIMPOLICY    VOLUMEBIINDINGMODE    ALLOWVOLUMEEXPANSION     AGE
    standard (default)    k8s.io/minikube-hostpath     Delete           Immediate             false 
    
  • تحقق من متطلبات الأجهزة والبرامج قبل التثبيت.

  • قبل تثبيت Milvus، يُنصح باستخدام أداة Milvus Sizing Tool لتقدير متطلبات الأجهزة بناءً على حجم البيانات لديك. يساعد ذلك في ضمان الأداء الأمثل وتخصيص الموارد بشكل مثالي لتثبيت Milvus الخاص بك.

إذا واجهت أي مشكلات في سحب الصورة، فاتصل بنا على community@zilliz.com مع تفاصيل حول المشكلة، وسنقدم لك الدعم اللازم.

تثبيت مخطط Helm الخاص بـ Milvus

قبل تثبيت مخططات Helm الخاصة بـ Milvus، تحتاج إلى إضافة مستودع Helm الخاص بـ Milvus.

helm repo add zilliztech https://zilliztech.github.io/milvus-helm/

تم أرشفة مستودع مخططات Helm الخاصة بـ Milvus الموجود على https://github.com/milvus-io/milvus-helm. نستخدم الآن المستودع الجديد على https://github.com/zilliztech/milvus-helm. لا يزال المستودع المؤرشف متاحًا للمخططات حتى الإصدار 4.0.31، ولكن استخدم المستودع الجديد للإصدارات الأحدث.

ثم قم بجلب مخططات Milvus من المستودع على النحو التالي:

$ helm repo update

يمكنك دائمًا تشغيل هذا الأمر لجلب أحدث مخططات Milvus Helm.

التثبيت عبر الإنترنت

1. نشر مجموعة Milvus

بمجرد تثبيت مخطط Helm، يمكنك تشغيل Milvus على Kubernetes. يرشدك هذا القسم خلال عملية نشر مجموعة Milvus.

هل تحتاج إلى نشر مستقل بدلاً من ذلك؟

إذا كنت تفضل نشر Milvus في الوضع المستقل (عقدة واحدة) لأغراض التطوير أو الاختبار، فاستخدم هذا الأمر:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v3.0.0 \
  --set cluster.enabled=false \
  --set pulsarv3.enabled=false \
  --set standalone.messageQueue=woodpecker \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true

ملاحظة: يستخدم الوضع المستقل Woodpecker كقائمة انتظار الرسائل الافتراضية ويقوم بتمكين مكون Streaming Node. تعمل عمليات النشر المستقلة على تشغيل Woodpecker المدمج في pod Milvus؛ بينما تُستخدم خدمة Woodpecker المخصصة (pods منفصلة) لعمليات النشر الموزعة/على الكتلة فقط. لمزيد من التفاصيل، راجع نظرة عامة على البنية و Woodpecker.

نشر مجموعة Milvus:

بالنسبة لوضع خدمة Woodpecker، نوصي باستخدام الإصدار القادم Milvus 3.0.1 أو إصدار أحدث مع Woodpecker v0.1.37 أو أحدث من أجل تحسينات تنظيف الضغط والتزام المجموعة.

يقوم الأمر التالي بنشر مجموعة Milvus بإعدادات مُحسَّنة للإصدار v3.0.0، باستخدام Woodpecker كقائمة انتظار الرسائل الموصى بها:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v3.0.0 \
  --set woodpecker.enabled=true \
  --set woodpecker.image.tag=v0.1.37 \
  --set streaming.enabled=true \
  --set streaming.woodpecker.embedded=false \
  --set indexNode.enabled=false

ما يفعله هذا الأمر:

  • يستخدم Woodpecker كقائمة انتظار الرسائل (موصى به لتقليل الصيانة)
  • تشغيل Woodpecker كخدمة مخصصة (مجموعة StatefulSet منفصلة)، وليست مدمجة في عقدة البث
  • يقوم بتمكين مكون «عقدة البث » الجديد لتحسين الأداء
  • يعطل «عقدة الفهرس » القديمة (تتولى «عقدة البيانات» الآن هذه الوظيفة)

التغييرات في بنية Milvus 2.6.x:

  • قائمة انتظار الرسائل: يُوصى الآن باستخدام Woodpecker (يقلل من صيانة البنية التحتية مقارنةً بـ Pulsar)
  • مكون جديد: تم تقديم Streaming Node وتم تمكينه افتراضيًا
  • المكونات المدمجة: تم دمج «عقدة الفهرس » و«عقدة البيانات » في «عقدة بيانات» واحدة

للحصول على تفاصيل كاملة عن البنية، راجع نظرة عامة على البنية.

قوائم انتظار الرسائل البديلة: للنشر باستخدام Pulsar أو Kafka أو RocksMQ بدلاً من Woodpecker، راجع التبعيات الاختيارية.

الخطوات التالية: يقوم الأمر أعلاه بنشر Milvus بالتكوينات الموصى بها. للاستخدام في بيئة الإنتاج:

ملاحظات مهمة:

  • تسمية الإصدار: استخدم الأحرف والأرقام والشرطات فقط (لا يُسمح باستخدام النقاط)

لمزيد من المعلومات، راجع مخطط Helm الخاص بـ Milvus ووثائق Helm.

2. تحقق من حالة مجموعة Milvus

تأكد من نجاح النشر عن طريق التحقق من حالة البودات:

kubectl get pods

انتظر حتى تظهر حالة «قيد التشغيل» لجميع البودات. مع تكوين الإصدار v3.0.0، من المفترض أن ترى بودات مشابهة لما يلي:

NAME                                             READY  STATUS   RESTARTS  AGE
my-release-etcd-0                                1/1    Running   0        3m23s
my-release-etcd-1                                1/1    Running   0        3m23s
my-release-etcd-2                                1/1    Running   0        3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm      1/1    Running   0        3m23s
my-release-milvus-mixcoord-7fb9488465-dmbbj      1/1    Running   0        3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv          1/1    Running   0        3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg     1/1    Running   0        3m24s
my-release-milvus-streamingnode-7b8cfc769c-mqmsm  1/1    Running   0        3m24s
my-release-milvus-woodpecker-0                   1/1    Running   0        3m24s
my-release-milvus-woodpecker-1                   1/1    Running   0        3m24s
my-release-milvus-woodpecker-2                   1/1    Running   0        3m24s
my-release-milvus-woodpecker-3                   1/1    Running   0        3m24s
my-release-minio-0                               1/1    Running   0        3m23s
my-release-minio-1                               1/1    Running   0        3m23s
my-release-minio-2                               1/1    Running   0        3m23s
my-release-minio-3                               1/1    Running   0        3m23s

المكونات الرئيسية التي يجب التحقق منها:

  • مكونات Milvus: mixcoord ، datanode ، querynode ، proxy ، streamingnode
  • التبعيات: etcd (البيانات الوصفية)، minio (تخزين الكائنات)، woodpecker (قائمة انتظار الرسائل)

باستخدام streaming.woodpecker.embedded=false ، يعمل Woodpecker كـ StatefulSet مخصص (my-release-milvus-woodpecker ، 4 نسخ متماثلة افتراضيًا — أغلبية 3 عقد بالإضافة إلى عقدة احتياطية واحدة للتحمل الأعطال؛ لا تضبط woodpecker.replicaCount على أقل من 3) مدعومة بخدمة بدون واجهة مستخدم، باستخدام MinIO كخلفية تخزين — لذا فإن المجموعة تحتوي على مجموعة بودات woodpecker منفصلة، متميزة عن عقدة البث.

يمكنك أيضًا الوصول إلى واجهة المستخدم على الويب لـ Milvus على http://127.0.0.1:9091/webui/ بمجرد إعداد إعادة توجيه المنفذ (انظر الخطوة التالية). لمزيد من التفاصيل، راجع واجهة المستخدم على الويب لـ Milvus.

3. الاتصال بـ Milvus

للاتصال بمجموعة Milvus الخاصة بك من خارج Kubernetes، تحتاج إلى إعداد إعادة توجيه المنافذ.

إعداد إعادة توجيه المنفذ:

kubectl port-forward service/my-release-milvus 27017:19530

يقوم هذا الأمر بتوجيه المنفذ المحلي 27017 إلى منفذ Milvus 19530. يجب أن ترى:

Forwarding from 127.0.0.1:27017 -> 19530

تفاصيل الاتصال:

  • الاتصال المحلي: localhost:27017
  • المنفذ الافتراضي لـ Milvus: 19530

خيارات إعادة توجيه المنفذ:

  • التعيين التلقائي للمنفذ المحلي: استخدم :19530 بدلاً من 27017:19530 للسماح لـ kubectl باختيار منفذ متاح
  • الاستماع على جميع الواجهات: أضف --address 0.0.0.0 للسماح بالاتصالات من أجهزة أخرى:
    kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
    
  • النشر المستقل: في حالة استخدام الوضع المستقل، يظل اسم الخدمة كما هو

اترك هذه المحطة الطرفية مفتوحة أثناء استخدام Milvus. يمكنك الآن الاتصال بـ Milvus باستخدام أي SDK لـ Milvus على localhost:27017.

(اختياري) تحديث تكوينات Milvus

يمكنك تحديث تكوينات مجموعة Milvus الخاصة بك عن طريق تحرير ملف values.yaml وتطبيقه مرة أخرى.

  1. قم بإنشاء ملف values.yaml بالتكوينات المطلوبة.

    يفترض ما يلي أنك تريد تمكين proxy.http.

    extraConfigFiles:
      user.yaml: |+
        proxy:
          http:
            enabled: true
    

    للاطلاع على عناصر التكوين ذات الصلة، راجع «تكوين النظام».

  2. قم بتطبيق ملف values.yaml.

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. تحقق من التكوينات المحدثة.

    helm get values my-release
    

    يجب أن يعرض الناتج الإعدادات المحدثة.

الوصول إلى واجهة المستخدم على الويب لـ Milvus

يأتي Milvus مزودًا بأداة واجهة مستخدم رسومية مدمجة تسمى Milvus WebUI يمكنك الوصول إليها من خلال متصفحك. تعمل واجهة Milvus WebUI على تحسين قابلية مراقبة النظام بفضل واجهة بسيطة وسهلة الاستخدام. يمكنك استخدام واجهة Milvus WebUI لمراقبة الإحصائيات والمقاييس الخاصة بمكونات Milvus وتبعياته، والتحقق من تفاصيل قاعدة البيانات والمجموعات، وعرض قائمة بالتكوينات التفصيلية لـ Milvus. للحصول على تفاصيل حول واجهة المستخدم الرسومية لـ Milvus، راجع Milvus WebUI

لتمكين الوصول إلى واجهة المستخدم الرسومية لـ Milvus WebUI، تحتاج إلى إعادة توجيه منفذ 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.

1. الحصول على ملف بيان Milvus

قم بتشغيل الأمر التالي للحصول على ملف بيان Milvus.

$ helm template my-release zilliztech/milvus > milvus_manifest.yaml

يعمل الأمر أعلاه على عرض قوالب المخططات لمجموعة Milvus وحفظ الناتج في ملف بيان يسمى milvus_manifest.yaml. باستخدام ملف البيان هذا، يمكنك تثبيت مجموعة Milvus مع مكوناتها وتبعياتها في وحدات منفصلة.

  • لتثبيت مثيل Milvus في الوضع المستقل حيث يتم تضمين جميع مكونات Milvus داخل بود واحد، يجب عليك تشغيل helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false --set standalone.messageQueue=woodpecker --set woodpecker.enabled=true --set streaming.enabled=true zilliztech/milvus > milvus_manifest.yaml بدلاً من ذلك لعرض قوالب المخططات لمثيل Milvus في الوضع المستقل.
  • لتغيير تكوينات Milvus، قم بتنزيل value.yaml القالب، وأدخل الإعدادات التي تريدها فيه، واستخدم helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml لعرض ملف التعريف وفقًا لذلك.

2. تنزيل البرنامج النصي لسحب الصور

تم تطوير البرنامج النصي لسحب الصور بلغة Python. يجب عليك تنزيل البرنامج النصي مع تبعياته الموجودة في ملف requirement.txt.

$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py

3. سحب الصور وحفظها

قم بتشغيل الأمر التالي لسحب الصور المطلوبة وحفظها.

$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml

يتم سحب الصور إلى مجلد فرعي باسم images في الدليل الحالي.

4. تحميل الصور

يمكنك الآن تحميل الصور إلى المضيفات في البيئة المقيدة بالشبكة على النحو التالي:

$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done

5. نشر Milvus

$ kubectl apply -f milvus_manifest.yaml

حتى الآن، يمكنك اتباع الخطوتين 2 و3 من التثبيت عبر الإنترنت للتحقق من حالة المجموعة وتوجيه منفذ محلي إلى Milvus.

ترقية مجموعة Milvus قيد التشغيل

قم بتشغيل الأمر التالي لترقية مجموعة Milvus قيد التشغيل إلى أحدث إصدار:

$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values

إلغاء تثبيت Milvus

قم بتشغيل الأمر التالي لإلغاء تثبيت Milvus.

$ helm uninstall my-release

التبعيات الاختيارية

يستخدم هذا النشر Woodpecker كقائمة انتظار الرسائل، وetcd للبيانات الوصفية، وMinIO لتخزين الكائنات. لاستخدام قائمة انتظار رسائل مختلفة أو توصيل تخزين كائنات / بيانات وصفية خارجية، انظر:

يتم تعطيل التخزين V3 افتراضيًا. قم بتمكينه قبل استخدام الميزات التي تعتمد عليه. للاطلاع على المتطلبات واعتبارات التوافق، راجع التخزين V3.

الخطوة التالية

بعد تثبيت Milvus في Docker، يمكنك: