Menjalankan Milvus di Kubernetes dengan Milvus Operator

Halaman ini menjelaskan cara memulai instance Milvus di Kubernetes menggunakan Milvus Operator.

Gambaran Umum

Milvus Operator adalah solusi yang membantu Anda menerapkan dan mengelola tumpukan layanan Milvus lengkap untuk menargetkan kluster Kubernetes (K8s). Tumpukan tersebut mencakup semua komponen Milvus dan dependensi terkait seperti etcd, Pulsar, dan MinIO.

Prasyarat

  • Buat kluster K8s.

  • Instal StorageClass. Anda dapat memeriksa StorageClass yang telah diinstal sebagai berikut.

    $ kubectl get sc
    
    NAME                  PROVISIONER                  RECLAIMPOLICY    VOLUMEBIINDINGMODE    ALLOWVOLUMEEXPANSION     AGE
    standard (default)    k8s.io/minikube-hostpath     Delete           Immediate             false 
    
  • Periksa persyaratan perangkat keras dan perangkat lunak sebelum instalasi.

  • Sebelum menginstal Milvus, disarankan untuk menggunakan Milvus Sizing Tool guna memperkirakan persyaratan perangkat keras berdasarkan ukuran data Anda. Hal ini membantu memastikan kinerja optimal dan alokasi sumber daya yang tepat untuk instalasi Milvus Anda.

Jika Anda mengalami masalah saat menarik gambar, hubungi kami di community@zilliz.com dengan detail mengenai masalah tersebut, dan kami akan memberikan dukungan yang diperlukan.

Instal Milvus Operator

Milvus Operator mendefinisikan sumber daya khusus kluster Milvus di atas Sumber Daya Khusus Kubernetes. Saat sumber daya khusus didefinisikan, Anda dapat menggunakan API K8s secara deklaratif dan mengelola tumpukan penyebaran Milvus untuk memastikan skalabilitas dan ketersediaan tinggi.

Jalankan perintah berikut untuk menginstal Milvus Operator dengan 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

Anda akan melihat hasil yang mirip dengan berikut ini setelah proses instalasi selesai.

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

Jika Anda telah menginstal Milvus Operator sebelumnya, perbarui menggunakan perintah berikut:

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

Jalankan perintah berikut untuk menginstal Milvus Operator dengan kubectl.

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml

Anda akan melihat hasil yang mirip dengan berikut ini setelah proses instalasi selesai.

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

Anda dapat memeriksa apakah pod Milvus Operator sedang berjalan sebagai berikut:

$ kubectl get pods -n milvus-operator

NAME                               READY   STATUS    RESTARTS   AGE
milvus-operator-5fd77b87dc-msrk4   1/1     Running   0          46s

Menerapkan Milvus

1. Deploy kluster Milvus

Setelah pod Milvus Operator berjalan, Anda dapat melakukan deploy kluster Milvus sebagai berikut.

$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_woodpecker.yaml

Perintah di atas mengimplementasikan kluster Milvus dengan Woodpecker sebagai antrian pesan (direkomendasikan untuk v2.6.24) dan semua komponen arsitektur baru, termasuk Streaming Node.

Fitur utama arsitektur dalam penyebaran ini:

  • Antrian Pesan: Menggunakan Woodpecker (mengurangi pemeliharaan infrastruktur)
  • Streaming Node: Diaktifkan untuk pemrosesan data yang lebih baik
  • Mix Coordinator: Komponen koordinator yang dikonsolidasikan untuk meningkatkan efisiensi

Untuk menyesuaikan pengaturan ini, kami menyarankan Anda menggunakan Milvus Sizing Tool untuk menyesuaikan konfigurasi berdasarkan ukuran data aktual Anda, lalu mengunduh berkas YAML yang sesuai. Untuk informasi lebih lanjut mengenai parameter konfigurasi, lihat Milvus System Configurations Checklist.

  • Nama rilis hanya boleh berisi huruf, angka, dan tanda hubung. Titik tidak diperbolehkan dalam nama rilis.
  • Anda juga dapat menerapkan instance Milvus dalam mode mandiri, di mana semua komponennya terdapat dalam satu pod. Untuk melakukannya, ubah URL berkas konfigurasi dalam perintah di atas menjadi https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml

2. Periksa status kluster Milvus

Jalankan perintah berikut untuk memeriksa status kluster Milvus

$ kubectl get milvus my-release -o yaml

Setelah kluster Milvus Anda siap, hasil perintah di atas seharusnya mirip dengan berikut ini. Jika kolom " status.status " tetap menunjukkan " Unhealthy", berarti kluster Milvus Anda masih dalam proses pembuatan.

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: Pulsar is ready
    reason: PulsarReady
    status: "True"
    type: PulsarReady
  - 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 membuat dependensi Milvus, seperti etcd, Pulsar, dan MinIO, lalu komponen Milvus, seperti proxy, koordinator, dan node.

Setelah kluster Milvus Anda siap, status semua pod di kluster Milvus seharusnya mirip dengan yang berikut ini.

$ 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. Alihkan port lokal ke Milvus

Jalankan perintah berikut untuk mengetahui port yang digunakan oleh kluster Milvus Anda.

$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530

Hasilnya menunjukkan bahwa instance Milvus melayani di port default 19530.

Jika Anda telah menerapkan Milvus dalam mode mandiri, ubah nama pod dari my-release-milvus-proxy-xxxxxxxxxx-xxxxx menjadi my-release-milvus-xxxxxxxxxx-xxxxx.

Kemudian, jalankan perintah berikut untuk meneruskan port lokal ke port tempat Milvus beroperasi.

$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530

Secara opsional, Anda dapat menggunakan :19530 alih-alih 27017:19530 dalam perintah di atas agar kubectl mengalokasikan port lokal untuk Anda sehingga Anda tidak perlu mengelola konflik port.

Secara default, pengalihan port kubectl hanya mendengarkan pada localhost. Gunakan bendera address jika Anda ingin Milvus mendengarkan pada alamat IP yang dipilih atau semua alamat IP. Perintah berikut membuat pengalihan port mendengarkan pada semua alamat IP di mesin host.

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530

Sekarang, Anda dapat terhubung ke Milvus menggunakan port yang diteruskan.

(Opsional) Perbarui konfigurasi Milvus

Anda dapat melihat dan memperbarui konfigurasi kluster Milvus Anda dengan menjalankan perintah ` patch ` sebagai berikut:

  1. Jalankan perintah berikut untuk melihat pratinjau konfigurasi yang akan diterapkan.

    Berikut ini mengasumsikan bahwa Anda ingin memperbarui parameter ` spec.components.disableMetric ` menjadi ` false ` ms.

    $ kubectl patch milvus my-release --type='merge'\
      -p '{"spec":{"components":{"disableMetric":false}}}' \
      --dry-run=client -o yaml
    

    Untuk item konfigurasi yang berlaku, lihat Konfigurasi Sistem.

  2. Perbarui konfigurasi.

    $ kubectl patch milvus my-release --type='merge'\
      -p '{"spec":{"components":{"disableMetric":false}}}' 
    

Akses Milvus WebUI

Milvus dilengkapi dengan alat GUI bawaan bernama Milvus WebUI yang dapat Anda akses melalui browser. Milvus WebUI meningkatkan kemampuan pemantauan sistem dengan antarmuka yang sederhana dan intuitif. Anda dapat menggunakan Milvus WebUI untuk memantau statistik dan metrik komponen serta dependensi Milvus, memeriksa detail database dan koleksi, serta menampilkan konfigurasi Milvus secara terperinci. Untuk detail tentang Milvus WebUI, lihat Milvus WebUI

Untuk mengaktifkan akses ke Milvus Web UI, Anda perlu melakukan port forwarding pod proxy ke port lokal.

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091

Sekarang, Anda dapat mengakses Milvus Web UI di http://localhost:27018.

Menghapus Instalasi Milvus

Jalankan perintah berikut untuk menghapus instalasi kluster Milvus.

$ kubectl delete milvus my-release
  • Saat Anda menghapus kluster Milvus menggunakan konfigurasi default, dependensi seperti etcd, Pulsar, dan MinIO tidak akan dihapus. Oleh karena itu, saat Anda menginstal instance kluster Milvus yang sama di lain waktu, dependensi ini akan digunakan kembali.
  • Untuk menghapus dependensi dan persistent volume claims (PVC) bersama dengan kluster Milvus, lihat berkas konfigurasi.

Hapus Instalasi Milvus Operator

Ada dua cara untuk menghapus instalasi Milvus Operator.

Hapus Instalasi dengan Helm

$ helm -n milvus-operator uninstall milvus-operator

Hapus Instalasi dengan kubectl

$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml

Langkah selanjutnya

Setelah menginstal Milvus di Docker, Anda dapat:

Diterjemahkan olehDeepL

Office Hours

Jam Kantor Milvus

Dapatkan bantuan untuk penerapan produksi dari Zilliz, para ahli di Milvus.

Pesan sesi 1:1 gratis

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?