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
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 falsePeriksa 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:
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 yamlUntuk item konfigurasi yang berlaku, lihat Konfigurasi Sistem.
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:
Kunjungi Hello Milvus untuk melihat apa saja yang bisa dilakukan Milvus.
Pelajari operasi dasar Milvus:
Terapkan kluster Milvus Anda di cloud:
Jelajahi Milvus WebUI, antarmuka web yang intuitif untuk pemantauan dan pengelolaan Milvus.
Jelajahi Milvus Backup, alat sumber terbuka untuk pencadangan data Milvus.
Jelajahi Birdwatcher, alat sumber terbuka untuk debugging Milvus dan pembaruan konfigurasi dinamis.
Jelajahi Attu, alat GUI sumber terbuka untuk pengelolaan Milvus yang intuitif.