Menjalankan Milvus di Kubernetes dengan Helm

Halaman ini mengilustrasikan cara memulai instans Milvus di Kubernetes menggunakan bagan Helm Milvus.

Gambaran umum

Helm menggunakan format pengemasan yang disebut bagan. Bagan adalah kumpulan berkas yang mendeskripsikan sekumpulan sumber daya Kubernetes terkait. Milvus menyediakan sekumpulan bagan untuk membantu Anda menerapkan dependensi dan komponen Milvus.

Prasyarat

  • Instal Helm CLI.

  • Buat kluster K8s.

  • Instal StorageClass. Anda dapat memeriksa StorageClass yang terinstal 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 untuk memperkirakan kebutuhan perangkat keras berdasarkan ukuran data Anda. Hal ini membantu memastikan kinerja dan alokasi sumber daya yang optimal untuk instalasi Milvus Anda.

Jika Anda mengalami masalah dalam menarik gambar, hubungi kami di community@zilliz.com dengan rincian tentang masalahnya, dan kami akan memberikan dukungan yang diperlukan.

Menginstal Milvus Helm Chart

Sebelum menginstal Milvus Helm Charts, Anda harus 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. Repo yang diarsipkan masih tersedia untuk grafik hingga 4.0.31, tetapi gunakan repo yang baru untuk rilis selanjutnya.

Kemudian ambil grafik Milvus dari repositori sebagai berikut:

$ helm repo update

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

Instalasi online

1. Menerapkan sebuah cluster Milvus

Setelah Anda menginstal bagan Helm, Anda dapat memulai Milvus di Kubernetes. Bagian ini memandu Anda dalam men-deploy cluster Milvus.

Perlu penerapan mandiri?

Jika Anda lebih suka menggunakan Milvus dalam mode mandiri (simpul tunggal) untuk pengembangan atau pengujian, gunakan perintah ini:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.15 \
  --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 antrean pesan default dan mengaktifkan komponen Streaming Node. Untuk detailnya, lihat Gambaran Umum Arsitektur dan Gunakan Woodpecker.

Menyebarkan cluster Milvus:

Perintah berikut ini menyebarkan cluster Milvus dengan pengaturan yang dioptimalkan untuk v2.6.15, menggunakan Woodpecker sebagai antrean pesan yang direkomendasikan:

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

Apa yang dilakukan perintah ini:

  • Menggunakan Woodpecker sebagai antrean pesan (disarankan untuk mengurangi pemeliharaan)
  • Mengaktifkan komponen Streaming Node baru untuk meningkatkan kinerja
  • Menonaktifkan Index Node yang lama (fungsionalitasnya sekarang ditangani oleh Data Node)
  • Menonaktifkan Pulsar untuk menggunakan Woodpecker sebagai gantinya

Perubahan Arsitektur di Milvus 2.6.x:

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

Untuk detail arsitektur lengkap, lihat Tinjauan Arsitektur.

Opsi Antrian Pesan Alternatif:

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

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

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

Catatan penting:

  • Penamaan rilis: Gunakan hanya huruf, angka, dan tanda hubung (tidak boleh ada titik)
  • Kubernetes v1.25+: Jika Anda mengalami masalah PodDisruptionBudget, gunakan solusi 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 Bagan Helm Milvus dan dokumentasi Helm.

2. Memeriksa status cluster Milvus

Verifikasi bahwa penerapan Anda berhasil dengan memeriksa status pod:

kubectl get pods

Tunggu hingga semua pod menunjukkan status "Running". Dengan konfigurasi v2.6.15, Anda akan 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 harus diverifikasi:

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

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

3. Menyambung ke Milvus

Untuk menyambung ke kluster Milvus Anda dari luar Kubernetes, Anda perlu menyiapkan penerusan porta.

Siapkan penerusan porta:

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

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

Forwarding from 127.0.0.1:27017 -> 19530

Detail koneksi:

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

Pilihan untuk penerusan port:

  • Tetapkan port lokal secara otomatis: Gunakan :19530 dan bukan 27017:19530 untuk membiarkan kubectl memilih port yang tersedia
  • Mendengarkan pada 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
    
  • Penyebaran mandiri: Jika menggunakan mode mandiri, nama layanan tetap sama

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

(Opsional) Memperbarui konfigurasi Milvus

Anda dapat memperbarui konfigurasi cluster Milvus Anda dengan mengedit berkas values.yaml dan menerapkannya lagi.

  1. Buat file 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 file 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
    

    Output seharusnya menunjukkan konfigurasi yang telah diperbarui.

Mengakses Milvus WebUI

Milvus dilengkapi dengan alat GUI bawaan yang disebut Milvus WebUI yang dapat Anda akses melalui peramban. Milvus Web UI meningkatkan kemampuan pengamatan sistem dengan antarmuka yang sederhana dan intuitif. Anda dapat menggunakan Milvus Web UI untuk mengamati statistik dan metrik komponen dan ketergantungan Milvus, memeriksa detail basis data dan koleksi, dan membuat daftar konfigurasi Milvus yang terperinci. Untuk detail tentang Milvus Web UI, lihat Milvus WebUI

Untuk mengaktifkan akses ke Milvus Web UI, anda perlu melakukan port-forward proxy pod 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 yang dibatasi jaringan, ikuti prosedur di bagian ini untuk memulai cluster Milvus.

1. Dapatkan manifes Milvus

Jalankan perintah berikut untuk mendapatkan manifes Milvus.

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

Perintah di atas membuat templat bagan untuk klaster Milvus dan menyimpan hasilnya ke berkas manifes bernama milvus_manifest.yaml. Dengan menggunakan manifes ini, Anda dapat menginstal klaster Milvus dengan komponen dan dependensinya dalam pod yang terpisah.

  • Untuk menginstal instans Milvus dalam mode mandiri di mana semua komponen Milvus berada dalam satu pod, Anda harus menjalankan 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 merender templat bagan untuk instans Milvus dalam mode mandiri.
  • Untuk mengubah konfigurasi Milvus, unduh template value.yaml template, letakkan pengaturan yang Anda inginkan di dalamnya, dan gunakan helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml untuk merender manifes yang sesuai.

2. Unduh skrip penarik gambar

Skrip penarik gambar dikembangkan dalam bahasa Python. Anda harus mengunduh skrip bersama dengan dependensinya di file 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. Menarik dan menyimpan gambar

Jalankan perintah berikut untuk menarik dan menyimpan gambar yang diperlukan.

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

Gambar-gambar tersebut akan ditarik ke dalam sub-folder 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. Menyebarkan Milvus

$ kubectl apply -f milvus_manifest.yaml

Hingga saat ini, Anda dapat mengikuti langkah 2 dan 3 dari penginstalan online untuk memeriksa status klaster dan meneruskan porta lokal ke Milvus.

Memutakhirkan cluster Milvus yang sedang berjalan

Jalankan perintah berikut untuk meng-upgrade cluster Milvus yang sedang berjalan ke versi terbaru:

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

Copot pemasangan Milvus

Jalankan perintah berikut untuk menghapus instalan Milvus.

$ helm uninstall my-release

Apa selanjutnya

Setelah menginstal Milvus di Docker, Anda dapat: