Menjalankan Milvus di Kubernetes dengan Helm

Halaman ini menjelaskan cara menjalankan instance Milvus di Kubernetes menggunakan Helm chart Milvus.

Gambaran Umum

Helm menggunakan format pengemasan yang disebut chart. Chart adalah kumpulan berkas yang mendeskripsikan sekumpulan sumber daya Kubernetes yang saling terkait. Milvus menyediakan serangkaian chart untuk membantu Anda melakukan deployment terhadap dependensi dan komponen Milvus.

Persyaratan

  • Instal Helm CLI.

  • 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 Helm Chart

Sebelum menginstal Milvus Helm Charts, Anda perlu menambahkan repositori Milvus Helm.

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

Repositori Milvus Helm Charts di https://github.com/milvus-io/milvus-helm telah diarsipkan. Kami sekarang menggunakan repositori baru di https://github.com/zilliztech/milvus-helm. Repositori yang diarsipkan masih tersedia untuk chart hingga versi 4.0.31, tetapi gunakan repositori baru untuk rilis yang lebih baru.

Kemudian, unduh Milvus Helm Charts dari repositori tersebut sebagai berikut:

$ helm repo update

Anda selalu dapat menjalankan perintah ini untuk mengambil Milvus Helm charts terbaru.

Instalasi daring

1. Deploy kluster Milvus

Setelah Anda menginstal chart Helm, Anda dapat memulai Milvus di Kubernetes. Bagian ini memandu Anda dalam menyebarkan kluster Milvus.

Butuh penyebaran mandiri?

Jika Anda lebih memilih untuk menyebarkan Milvus dalam mode mandiri (satu node) untuk pengembangan atau pengujian, gunakan perintah ini:

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

Catatan: Mode mandiri menggunakan Woodpecker sebagai antrian pesan default dan mengaktifkan komponen Streaming Node. Untuk detailnya, lihat Ikhtisar Arsitektur dan Menggunakan Woodpecker.

Menerapkan kluster Milvus:

Perintah berikut ini menyebarkan kluster Milvus dengan pengaturan yang dioptimalkan untuk v2.6.24, menggunakan Woodpecker sebagai antrian pesan yang direkomendasikan:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --set pulsarv3.enabled=false \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

Fungsi perintah ini:

  • Menggunakan Woodpecker sebagai antrian pesan (direkomendasikan untuk mengurangi beban pemeliharaan)
  • Mengaktifkan komponen Streaming Node baru untuk meningkatkan kinerja
  • Menonaktifkan Index Node versi lama (fungsinya kini ditangani oleh Data Node)
  • Menonaktifkan Pulsar dan menggantinya dengan Woodpecker

Perubahan Arsitektur di Milvus 2.6.x:

  • Antrian Pesan: Woodpecker kini direkomendasikan (mengurangi pemeliharaan infrastruktur dibandingkan dengan Pulsar)
  • Komponen Baru: Streaming Node diperkenalkan dan diaktifkan secara default
  • Komponen yang Digabungkan: Index Node dan Data Node digabungkan menjadi satu Data Node

Untuk detail arsitektur lengkap, lihat Ikhtisar Arsitektur.

Opsi Antrian Pesan Alternatif:

Jika Anda lebih memilih menggunakan Pulsar (pilihan tradisional) daripada Woodpecker:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

Langkah selanjutnya: Perintah di atas mengimplementasikan Milvus dengan konfigurasi yang direkomendasikan. Untuk penggunaan produksi:

Catatan penting:

  • Penamaan rilis: Gunakan hanya huruf, angka, dan tanda hubung (titik tidak diperbolehkan)
  • Kubernetes v1.25+: Jika Anda mengalami masalah PodDisruptionBudget, gunakan solusi sementara ini:
    helm install my-release zilliztech/milvus \
      --set pulsar.bookkeeper.pdb.usePolicy=false \
      --set pulsar.broker.pdb.usePolicy=false \
      --set pulsar.proxy.pdb.usePolicy=false \
      --set pulsar.zookeeper.pdb.usePolicy=false
    

Untuk informasi lebih lanjut, lihat Milvus Helm Chart dan dokumentasi Helm.

2. Periksa status kluster Milvus

Pastikan deployment Anda berhasil dengan memeriksa status pod:

kubectl get pods

Tunggu hingga semua pod menunjukkan status “Running”. Dengan konfigurasi v2.6.24, Anda seharusnya melihat pod yang mirip dengan:

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-streaming-node-xxxxxxxxx       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
my-release-pulsar-autorecovery-86f5dbdf77-lchpc  1/1    Running   0        3m24s
my-release-pulsar-bookkeeper-0                   1/1    Running   0        3m23s
my-release-pulsar-bookkeeper-1                   1/1    Running   0        98s
my-release-pulsar-broker-556ff89d4c-2m29m        1/1    Running   0        3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v         1/1    Running   0        3m23s
my-release-pulsar-zookeeper-0                    1/1    Running   0        3m23s
my-release-pulsar-zookeeper-metadata-98zbr       0/1   Completed  0        3m24s

Komponen utama yang perlu diverifikasi:

  • Komponen Milvus: mixcoord, datanode, querynode, proxy, streaming-node
  • Ketergantungan: etcd (metadata), minio (penyimpanan objek), pulsar (antrian pesan)

Anda juga dapat mengakses Milvus WebUI di http://127.0.0.1:9091/webui/ setelah pengalihan port disiapkan (lihat langkah berikutnya). Untuk detailnya, lihat Milvus WebUI.

3. Menghubungkan ke Milvus

Untuk terhubung ke kluster Milvus Anda dari luar Kubernetes, Anda perlu mengatur port forwarding.

Konfigurasikan port forwarding:

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

Perintah ini meneruskan port lokal Anda 27017 ke port Milvus 19530. Anda akan melihat:

Forwarding from 127.0.0.1:27017 -> 19530

Rincian koneksi:

  • Koneksi lokal: localhost:27017
  • Port default Milvus: 19530

Opsi untuk penerusan port:

  • Penetapan port lokal otomatis: Gunakan :19530 alih-alih 27017:19530 agar kubectl memilih port yang tersedia
  • Mendengarkan di semua antarmuka: Tambahkan --address 0.0.0.0 untuk mengizinkan koneksi dari mesin lain:
    kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
    
  • Penerapan mandiri: Jika menggunakan mode mandiri, nama layanan tetap sama

Biarkan terminal ini tetap terbuka saat menggunakan Milvus. Anda kini dapat terhubung ke Milvus menggunakan SDK Milvus mana pun di localhost:27017.

(Opsional) Perbarui konfigurasi Milvus

Anda dapat memperbarui konfigurasi kluster Milvus Anda dengan mengedit berkas values.yaml dan menerapkannya kembali.

  1. Buat berkas values.yaml dengan konfigurasi yang diinginkan.

    Berikut ini mengasumsikan bahwa Anda ingin mengaktifkan proxy.http.

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

    Untuk item konfigurasi yang berlaku, lihat Konfigurasi Sistem.

  2. Terapkan berkas ` values.yaml `.

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. Periksa konfigurasi yang telah diperbarui.

    helm get values my-release
    

    Hasilnya seharusnya menampilkan konfigurasi yang telah diperbarui.

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 daftar konfigurasi Milvus secara terperinci. Untuk detail tentang Milvus WebUI, lihat Milvus WebUI

Untuk mengaktifkan akses ke Milvus WebUI, 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.

Instalasi offline

Jika Anda berada di lingkungan dengan pembatasan jaringan, ikuti prosedur di bagian ini untuk memulai kluster Milvus.

1. Dapatkan manifest Milvus

Jalankan perintah berikut untuk mendapatkan manifest Milvus.

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

Perintah di atas merender templat chart untuk kluster Milvus dan menyimpan hasilnya ke berkas manifest bernama ` milvus_manifest.yaml`. Dengan menggunakan manifest ini, Anda dapat menginstal kluster Milvus beserta komponen dan ketergantungannya dalam pod terpisah.

  • Untuk menginstal instance Milvus dalam mode mandiri di mana semua komponen Milvus terdapat dalam satu pod, Anda harus menjalankan perintah ` helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false zilliztech/milvus > milvus_manifest.yaml ` sebagai gantinya untuk menghasilkan templat chart untuk instance Milvus dalam mode mandiri.
  • Untuk mengubah konfigurasi Milvus, unduh value.yaml templat tersebut, masukkan pengaturan yang Anda inginkan ke dalamnya, lalu gunakan helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml untuk menghasilkan manifes yang sesuai.

2. Unduh skrip pengunduhan gambar

Skrip pengunduhan gambar dikembangkan dalam Python. Anda harus mengunduh skrip tersebut beserta dependensinya dalam berkas 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. Mengunduh dan menyimpan gambar

Jalankan perintah berikut untuk mengunduh dan menyimpan gambar yang diperlukan.

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

Gambar-gambar tersebut akan diunduh ke dalam subfolder bernama images di direktori saat ini.

4. Memuat gambar

Anda sekarang dapat memuat gambar ke host di lingkungan yang dibatasi jaringan sebagai berikut:

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

5. Deploy Milvus

$ kubectl apply -f milvus_manifest.yaml

Sampai saat ini, Anda dapat mengikuti langkah 2 dan 3 dari panduan instalasi online untuk memeriksa status kluster dan meneruskan port lokal ke Milvus.

Memperbarui kluster Milvus yang sedang berjalan

Jalankan perintah berikut untuk memutakhirkan kluster Milvus yang sedang berjalan ke versi terbaru:

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

Hapus instalasi Milvus

Jalankan perintah berikut untuk menghapus instalasi Milvus.

$ helm uninstall my-release

Langkah selanjutnya

Setelah menginstal Milvus di Docker, Anda dapat: