Meningkatkan Kluster Milvus dengan Milvus Operator
Panduan ini menjelaskan cara melakukan pembaruan kluster Milvus 2.6.x ke v3.0.3 menggunakan Milvus Operator.
Prosedur ini telah diverifikasi dari Milvus 2.6.20 ke Milvus v3.0.3 dengan Milvus Operator 1.3.0, MixCoord, StreamingNode, Woodpecker, etcd dalam kluster, dan MinIO dalam kluster. Jika Anda menggunakan rilis patch Milvus 2.6.x, versi Operator, topologi komponen, antrian pesan, atau konfigurasi ketergantungan yang berbeda, validasi pembaruan tersebut terlebih dahulu di lingkungan non-produksi.
Prasyarat
- Sebuah kluster Kubernetes dengan kluster Milvus 2.6.x yang dikelola oleh Milvus Operator
kubectlakses ke kluster- Manifest sumber daya khusus (CR) Milvus lengkap yang digunakan untuk penyebaran yang ada
- Metode instalasi dan manifest yang digunakan untuk Milvus Operator yang sudah ada
- Cadangan terbaru dari metadata Milvus dan data persisten
Batasan Antrian Pesan: Saat melakukan peningkatan ke Milvus v3.0.3, Anda harus mempertahankan pilihan antrian pesan Anda saat ini. Beralih di antara sistem antrian pesan yang berbeda selama proses peningkatan tidak didukung. Dukungan untuk mengubah sistem antrian pesan akan tersedia di versi mendatang.
Terapkan CR Milvus lengkap untuk peningkatan ini. Jangan gunakan patch penggabungan yang hanya berupa gambar. Operator dapat menetapkan bidang komponen tanpa replika yang dihilangkan sebagai default, yang dapat mengaktifkan kembali komponen yang dinonaktifkan oleh penyebaran 2.6.x yang ada.
Prosedur ini tidak memvalidasi penurunan versi atau rollback dengan mengubah gambar Milvus kembali ke 2.6.x. Setelah v3.0.3 menulis data, rollback hanya pada gambar mungkin gagal membaca status yang telah diperbarui. Jika peningkatan versi gagal, hentikan penulisan dan gunakan rencana pemulihan yang mengembalikan metadata sebelum peningkatan versi serta cadangan data persisten. Validasi rencana pemulihan di lingkungan non-produksi terlebih dahulu.
Proses peningkatan versi
Langkah 1: Cadangkan CR Milvus saat ini
Simpan CR saat ini sebelum mengubah penyebaran:
kubectl get milvus <instance-name> \
--namespace <namespace> \
--output yaml > milvus-before-upgrade.yaml
Gunakan manifest sumber untuk penyebaran yang ada sebagai manifest peningkatan versi. Jangan menerapkan file cadangan yang diekspor secara langsung tanpa terlebih dahulu menghapus metadata yang dikelola server dan bidang status.
Langkah 2: Konfirmasi versi Milvus Operator
Periksa gambar yang digunakan oleh Milvus Operator yang terinstal:
kubectl get deployments --all-namespaces \
-o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{range .spec.template.spec.containers[*]}{.image}{" "}{end}{"\n"}{end}' \
| grep milvus-operator
Peningkatan yang telah divalidasi mempertahankan Milvus Operator pada versi 1.3.0. Pertahankan versi Operator yang saat ini mengelola penyebaran Milvus 2.6.x Anda, kecuali jika kebijakan dukungan Anda mengharuskan peningkatan Operator terpisah. Jangan menurunkan versi Operator yang lebih baru ke versi yang telah diuji. Jika Anda perlu mengubah versi Operator, gunakan metode instalasi Helm atau kubectl yang sama serta nama rilis dan ruang nama yang sama dengan instalasi yang ada, lalu validasi perubahan Operator sebelum memperbarui Milvus CR.
Langkah 3: Perbarui gambar Milvus
Dalam manifest CR Milvus yang lengkap, ubah ` spec.components.image ` menjadi versi target. Pertahankan mode saat ini, topologi komponen, antrian pesan, etcd, penyimpanan, dan pengaturan ketergantungan lainnya. Kutipan berikut menunjukkan bidang-bidang yang perlu dikonfirmasi; jangan ganti CR lengkap Anda dengan kutipan ini.
Sebelum menerapkan CR target, pastikan bahwa ` indexNode.replicas ` adalah ` 0`. Konfigurasi Milvus 2.6.20 yang telah diverifikasi sudah menggunakan pengaturan ini. Pertahankan pengaturan replika nol secara eksplisit dalam CR target.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: <instance-name>
namespace: <namespace>
spec:
components:
image: milvusdb/milvus:v3.0.3
indexNode:
replicas: 0
Terapkan manifest CR lengkap:
kubectl apply --filename milvus.yaml
Verifikasi peningkatan
Periksa status CR, status Pod, dan gambar kontainer:
kubectl get milvus <instance-name> \
--namespace <namespace> \
--output jsonpath='{.status.status}{"\t"}{.status.currentImage}{"\n"}'
kubectl get pods --namespace <namespace>
kubectl get pods --namespace <namespace> \
-o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.containers[*]}{.image}{" "}{end}{"\n"}{end}'
Pastikan bahwa CR Milvus melaporkan ` Healthy`, semua komponen Milvus menggunakan ` milvusdb/milvus:v3.0.3`, tidak ada Pod IndexNode yang sedang berjalan, dan koleksi yang ada tetap dapat di-query dan dicari. Selesaikan pemeriksaan ini sebelum Anda mengaktifkan fitur apa pun yang spesifik untuk v3.0.3.