Memutakhirkan Pulsar
Artikel ini menjelaskan prosedur bagi Anda untuk mengupgrade komponen Pulsar Anda dari V2 ke V3 jika Anda telah memiliki penerapan Milvus yang berfungsi dengan Pulsar V2.
Sejak Milvus v2.5, milvus-helm dan milvus-operator akan menggunakan Pulsar V3 secara default untuk memperbaiki beberapa bug dan kerentanan keamanan. Meskipun Milvus 2.5 kompatibel dengan Pulsar 2.x, upgrade ke Pulsar V3 bersifat opsional. Untuk meningkatkan stabilitas dan performa, kami merekomendasikan upgrade ke Pulsar V3.
Jika Anda lebih suka menggunakan Pulsar V2 dengan Milvus v2.5.x, baca Menggunakan Pulsar V2 dengan Milvus v2.5.x.
Proses peningkatan memerlukan pemadaman layanan singkat (biasanya membutuhkan waktu sekitar beberapa menit hingga lebih dari sepuluh menit, tergantung pada jumlah data).
Sebelum operasi, Anda harus menghentikan semua klien yang sedang berjalan untuk menulis data ke Milvus. Jika tidak, data yang ditulis dapat hilang.
Artikel ini mengasumsikan bahwa Milvus terinstal pada namespace
default
dan bernamamy-release
. Silakan ubah parameter ke namespace dan nama rilis Anda sendiri ketika menjalankan perintah-perintah yang disalin dari halaman ini.Pastikan bahwa lingkungan kerja Anda memiliki izin di bawah namespace yang disebutkan di atas dalam kluster Kubernetes dan perintah berikut ini telah terinstal.
a.
kubectl
>= 1.20b.
helm
>= 3.14.0c.
cat
,grep
,awk
untuk operasi manipulasi stringd.
curl
atau Attu v2.4+ untuk berinteraksi dengan API manajemen milvus
Peta jalan
Proses peningkatan mencakup langkah-langkah berikut:
Prosedur
Bagian ini memberikan prosedur terperinci untuk meningkatkan Pulsar dari V2 ke V3 di Milvus.
Menyimpan data yang tidak digunakan di Pulsar
Pada langkah ini, Anda perlu memastikan bahwa data yang ada di Pulsar telah dipertahankan ke layanan penyimpanan objek. Ada dua pendekatan yang tersedia, dan Anda dapat memilih salah satu yang sesuai dengan kebutuhan Anda.
Pendekatan 1: Menggunakan Attu
Jika Anda hanya memiliki sejumlah kecil koleksi dalam penerapan Milvus yang sedang berjalan dengan segmen yang tidak terlalu banyak, Anda dapat menggunakan Attu untuk menyimpan data ke layanan penyimpanan objek.
Pilih setiap koleksi di semua basis data Anda, masuk ke panel
Segments
, Klik tombolFlush
Panel segmen dari sebuah koleksi
Kemudian pada popup, Klik
Flush
lagi.Perintah flush data di Attu
Kemudian tunggu hingga semua status Persistent Segment semua koleksi menjadi
Flushed
.Melihat status flush data di Attu
Pendekatan 2: Menggunakan API manajemen
Proksi port 9091 dari proksi Milvus ke hos lokal untuk operasi selanjutnya.
kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091 &
Keluaran.
[1] 8116 Forwarding from 127.0.0.1:9091 -> 9091
Simpan Pid untuk pembersihan selanjutnya.
pid=8116
Memicu tindakan mempertahankan semua data yang dimasukkan dari Pulsar ke Ojbect Storage.
curl 127.0.0.1:9091/api/v1/collections \ |curl 127.0.0.1:9091/api/v1/persist -d @/dev/stdin\ |jq '.flush_coll_segIDs'| jq '[.[] | .data[]]' | jq '{segmentIDs: (.)}' \ > flushing_segments.json cat flushing_segments.json
Keluaran.
{ "segmentIDs": [ 454097953998181000, 454097953999383600, 454097953998180800 ] }
Centang Semua segmen telah dibilas.
cat flushing_segments.json| curl -X GET 127.0.0.1:9091/api/v1/persist/state -d @/dev/stdin
Setelah selesai, Anda akan melihat keluaran berikut ini
{"status":{},"flushed":true}
Hentikan proses latar belakang
kubectl port-forward
kill $pid
Keluaran.
[1] + 8116 terminated kubectl -n default port-forward deploy/my-release-milvus-proxy 9091:9091
Hentikan Milvus dan hapus Pulsar V2
Pada langkah ini, Anda perlu menghentikan pod Milvus dan menghapus penyebaran Pulsar V2. Ada dua bagian terpisah yang tersedia:
Untuk pengguna Milvus Helm
Jika Anda telah menginstal Milvus menggunakan bagan Milvus Helm, buka Hapus Pulsar v2 menggunakan Helm.
Untuk pengguna Milvus Operator
Jika Anda telah menginstal Milvus menggunakan Milvus Operator, buka Hapus Pulsar v2 menggunakan Milvus Operator.
Menghapus Pulsar V2 menggunakan Helm
Jika Anda telah menginstal Milvus menggunakan grafik Milvus Helm, ikuti langkah-langkah di bawah ini untuk menghentikan pod Milvus dan menghapus penyebaran Pulsar V2.
Simpan nilai rilis Milvus saat ini ke
values.yaml
untuk pemulihan nanti.helm -n default get values my-release -o yaml > values.yaml cat values.yaml
Gunakan perintah ini untuk menghentikan Milvus dan semua dependensinya. Jangan khawatir tentang volume data, mereka akan disimpan secara default.
helm -n default uninstall my-release
Keluaran
These resources were kept due to the resource policy: [PersistentVolumeClaim] my-release-minio release "my-release" uninstalled
Daftar PVC & PV pulsar (Klaim Volume Persisten & Volume Persisten) yang perlu dihapus
kubectl -n default get pvc -lapp=pulsar,release=my-release |grep -v NAME |awk '{print $1}' > pulsar-pvcs.txt kubectl -n default get pvc -lapp=pulsar,release=my-release -o custom-columns=VOL:.spec.volumeName|grep -v VOL > pulsar-pvs.txt echo "Volume Claims:" cat pulsar-pvcs.txt echo "Volumes:" cat pulsar-pvs.txt
Keluaran
Volume Claims: my-release-pulsar-bookie-journal-my-release-pulsar-bookie-0 my-release-pulsar-bookie-journal-my-release-pulsar-bookie-1 my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-0 my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-1 my-release-pulsar-zookeeper-data-my-release-pulsar-zookeeper-0 Volumes: pvc-f590a4de-df31-4ca8-a424-007eac3c619a pvc-17b0e215-3e14-4d14-901e-1a1dda9ff5a3 pvc-72f83c25-6ea1-45ee-9559-0b783f2c530b pvc-60dcb6e4-760d-46c7-af1a-d1fc153b0caf pvc-2da33f64-c053-42b9-bb72-c5d50779aa0a
Periksa apakah daftar PVC dari
pulsar-pvcs.txt
semuanya untuk Pulsar. Setelah Anda mengonfirmasi bahwa tidak ada kesalahan, hapus PVC.cat pulsar-pvcs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=false
Keluaran.
persistentvolumeclaim "my-release-pulsar-bookie-journal-my-release-pulsar-bookie-0" deleted persistentvolumeclaim "my-release-pulsar-bookie-journal-my-release-pulsar-bookie-1" deleted persistentvolumeclaim "my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-0" deleted persistentvolumeclaim "my-release-pulsar-bookie-ledgers-my-release-pulsar-bookie-1" deleted persistentvolumeclaim "my-release-pulsar-zookeeper-data-my-release-pulsar-zookeeper-0" deleted
(Opsional) Tergantung pada kelas penyimpanan yang menyediakan PVC, Anda mungkin juga perlu menghapus PV secara manual.
cat pulsar-pvs.txt |xargs -I {} kubectl -n default delete pvc {} --wait=false
Tidak masalah jika keluarannya adalah kesalahan NotFound. Itu sudah dihapus oleh pengontrol kubernetes.
Error from server (NotFound): persistentvolumeclaims "pvc-f590a4de-df31-4ca8-a424-007eac3c619a" not found Error from server (NotFound): persistentvolumeclaims "pvc-17b0e215-3e14-4d14-901e-1a1dda9ff5a3" not found Error from server (NotFound): persistentvolumeclaims "pvc-72f83c25-6ea1-45ee-9559-0b783f2c530b" not found Error from server (NotFound): persistentvolumeclaims "pvc-60dcb6e4-760d-46c7-af1a-d1fc153b0caf" not found Error from server (NotFound): persistentvolumeclaims "pvc-2da33f64-c053-42b9-bb72-c5d50779aa0a" not found
Menghapus Pulsar V2 menggunakan Operator Milvus
Jika Anda telah menginstal Milvus menggunakan Milvus Operator, ikuti langkah-langkah di bawah ini untuk menghentikan pod Milvus dan menghapus penyebaran Pulsar V2.
Simpan Manifes Milvus saat ini ke
milvus.yaml
untuk digunakan di kemudian hari.kubectl -n default get milvus my-release -o yaml > milvus.yaml head milvus.yaml -n 20
Keluaran.
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: annotations: milvus.io/dependency-values-merged: "true" milvus.io/pod-service-label-added: "true" milvus.io/querynode-current-group-id: "0" creationTimestamp: "2024-11-22T08:06:59Z" finalizers: - milvus.milvus.io/finalizer generation: 3 labels: app: milvus milvus.io/operator-version: 1.1.2 name: my-release namespace: default resourceVersion: "692217324" uid: 7a469ed0-9df1-494e-bd9a-340fac4305b5 spec: components:
Buat berkas
patch.yaml
dengan konten berikut ini.# a patch to retain etcd & storage data and delete pulsar data while delete milvus spec: dependencies: etcd: inCluster: deletionPolicy: Retain pvcDeletion: false storage: inCluster: deletionPolicy: Retain pvcDeletion: false pulsar: inCluster: deletionPolicy: Delete pvcDeletion: true
Gunakan
kubectl patch
untuk menyimpan data etcd & penyimpanan dan menghapus data pulsar saat menghapus milvus.kubectl -n default patch milvus my-release --patch-file patch.yaml --type=merge
Keluaran.
milvus.milvus.io/my-release patched
Hentikan Milvus dan hapus pulsar V2. Jangan khawatir dengan volume data penyimpanan etcd & objek, mereka akan disimpan secara default.
kubectl -n default delete milvus my-release --wait=false kubectl -n default get milvus my-release kubectl -n default delete milvus my-release --wait=true
Keluaran: Perhatikan bahwa mungkin diperlukan beberapa menit bagi milvus untuk berhenti secara perlahan dan bagi operator untuk menghapus volume pulsar.
milvus.milvus.io "my-release" deleted NAME MODE STATUS UPDATED AGE my-release cluster Deleting True 41m milvus.milvus.io "my-release" deleted
Tunggu sampai perintah selesai.
Periksa lagi untuk melihat apakah sumber daya milvus sudah hilang
kubectl -n default get milvus my-release
Keluarannya seharusnya seperti ini.
No resources found in default namespace.
Memulai Pulsar V3 dan Milvus
Pada langkah ini, Anda harus memulai Pulsar V3 dan Milvus. Ada dua bagian terpisah yang tersedia:
Untuk Pengguna Helm
Jika Anda telah menginstal Milvus menggunakan bagan Helm Milvus, masuk ke Untuk Pengguna Helm.
Untuk pengguna Operator Milvus
Jika Anda telah menginstal Milvus menggunakan Milvus Operator, masuk ke Untuk Pengguna Milvus Operator.
3. Mulai Pulsar V3 dan menggunakan Helm
Edit
values.yaml
yang telah disimpan pada langkah sebelumnya.# change the following: pulsar: enabled: false # set to false # you may also clean up rest fields under pulsar field # it's ok to keep them though. pulsarv3: enabled: true # append other values for pulsar v3 chart if needs
Perbarui repositori helm lokal anda
helm repo add zilliztech https://zilliztech.github.io/milvus-helm helm repo update zilliztech
Keluaran
"zilliztech" already exists with the same configuration, skipping Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "zilliztech" chart repository Update Complete. ⎈Happy Helming!⎈
Instal rilis milvus Anda dengan versi helm chart terbaru menggunakan
values.yaml
yang telah diedit.helm -n default install my-release zilliztech/milvus --reset-values -f values.yaml
Keluaran
NAME: my-release LAST DEPLOYED: Fri Nov 22 15:31:27 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
Periksa pods untuk melihat apakah semuanya sudah dijadwalkan dan berjalan dengan
kubectl -n default get pods
.Mungkin perlu beberapa menit agar semua pod dapat berjalan
Keluarannya akan terlihat seperti.
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 4m3s my-release-milvus-datanode-56487bc4bc-s6mbd 1/1 Running 0 4m5s my-release-milvus-indexnode-6476894d6-rv85d 1/1 Running 0 4m5s my-release-milvus-mixcoord-6d8875cb9c-67fcq 1/1 Running 0 4m4s my-release-milvus-proxy-7bc45d57c5-2qf8m 1/1 Running 0 4m4s my-release-milvus-querynode-77465747b-kt7f4 1/1 Running 0 4m4s my-release-minio-684ff4f5df-pnc97 1/1 Running 0 4m5s my-release-pulsarv3-bookie-0 1/1 Running 0 4m3s my-release-pulsarv3-bookie-1 1/1 Running 0 4m3s my-release-pulsarv3-bookie-2 1/1 Running 0 4m3s my-release-pulsarv3-bookie-init-6z4tk 0/1 Completed 0 4m1s my-release-pulsarv3-broker-0 1/1 Running 0 4m2s my-release-pulsarv3-broker-1 1/1 Running 0 4m2s my-release-pulsarv3-proxy-0 1/1 Running 0 4m2s my-release-pulsarv3-proxy-1 1/1 Running 0 4m2s my-release-pulsarv3-pulsar-init-wvqpc 0/1 Completed 0 4m1s my-release-pulsarv3-recovery-0 1/1 Running 0 4m3s my-release-pulsarv3-zookeeper-0 1/1 Running 0 4m2s my-release-pulsarv3-zookeeper-1 1/1 Running 0 4m2s my-release-pulsarv3-zookeeper-2 1/1 Running 0 4m2s
Mulai Pulsar V3 dan gunakan Milvus Operator
Edit
milvus.yaml
yang disimpan pada Langkah sebelumnya.# change the followings fields: apiVersion: milvus.io/v1beta1 kind: Milvus metadata: annotations: null # this field should be removed or set to null resourceVersion: null # this field should be removed or set to null uid: null # this field should be removed or set to null spec: dependencies: pulsar: inCluster: chartVersion: pulsar-v3 # delete all previous values for pulsar v2 and set it to null. # you may add additional values here for pulsar v3 if you're sure about it. values: null
Pastikan Milvus Operator anda sudah diupgrade ke versi v1.1.2 atau versi yang lebih baru
helm repo add milvus-operator https://zilliztech.github.io/milvus-operator helm repo update milvus-operator helm -n milvus-operator upgrade milvus-operator milvus-operator/milvus-operator
Gunakan perintah untuk memulai milvus dengan pulsar v3
kubectl create -f milvus.yaml
Keluaran
milvus.milvus.io/my-release created
Periksa pod untuk melihat apakah semuanya sudah dijadwalkan dan berjalan dengan
kubectl -n default get pods
.Mungkin perlu beberapa menit agar semua pod dapat dimulai.
Keluarannya akan terlihat seperti.
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 65m my-release-milvus-datanode-57fd59ff58-5mdrk 1/1 Running 0 93s my-release-milvus-indexnode-67867c6b9b-4wsbw 1/1 Running 0 93s my-release-milvus-mixcoord-797849f9bb-sf8z5 1/1 Running 0 93s my-release-milvus-proxy-5d5bf98445-c55m6 1/1 Running 0 93s my-release-milvus-querynode-0-64797f5c9-lw4rh 1/1 Running 0 92s my-release-minio-79476ccb49-zvt2h 1/1 Running 0 65m my-release-pulsar-bookie-0 1/1 Running 0 5m10s my-release-pulsar-bookie-1 1/1 Running 0 5m10s my-release-pulsar-bookie-2 1/1 Running 0 5m10s my-release-pulsar-bookie-init-v8fdj 0/1 Completed 0 5m11s my-release-pulsar-broker-0 1/1 Running 0 5m11s my-release-pulsar-broker-1 1/1 Running 0 5m10s my-release-pulsar-proxy-0 1/1 Running 0 5m11s my-release-pulsar-proxy-1 1/1 Running 0 5m10s my-release-pulsar-pulsar-init-5lhx7 0/1 Completed 0 5m11s my-release-pulsar-recovery-0 1/1 Running 0 5m11s my-release-pulsar-zookeeper-0 1/1 Running 0 5m11s my-release-pulsar-zookeeper-1 1/1 Running 0 5m10s my-release-pulsar-zookeeper-2 1/1 Running 0 5m10s