
類型:向量數(shù)據(jù)庫(kù)
簡(jiǎn)介:存儲(chǔ)、索引和管理由深度神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)(ML)模型生成的大規(guī)模嵌入向量。
本文將介紹如何使用Milvus Operator升級(jí)Milvus集群以及Milvus Standalone。隨著Milvus的不斷更新,用戶需要保持系統(tǒng)的最新版本,以確保性能和兼容性。
一、使用Milvus Operator升級(jí)Milvus集群
1、升級(jí)Milvus操作符
首先需要升級(jí)Milvus操作符。運(yùn)行以下命令將操作符版本升級(jí)到 v1.0.1。
升級(jí)Milvus操作符后,可以選擇以下幾種升級(jí)方法:
(1)滾動(dòng)升級(jí)
如果當(dāng)前的Milvus版本是v2.2.3或更高版本,可以選擇進(jìn)行滾動(dòng)升級(jí),以便在升級(jí)過(guò)程中盡量減少服務(wù)停機(jī)時(shí)間。
(2)通過(guò)更改映像進(jìn)行升級(jí)
如果Milvus版本是v2.2.3之前的次版本,建議直接通過(guò)更改映像版本來(lái)進(jìn)行升級(jí)。此方式會(huì)有短暫的停機(jī)時(shí)間,但操作較為簡(jiǎn)單。
(3)遷移元數(shù)據(jù)并升級(jí)
如果版本是v2.1.x,遷移元數(shù)據(jù)是升級(jí)到v2.5.1前的必要步驟。
2、滾動(dòng)升級(jí)
自Milvus 2.2.3版本起,Milvus支持協(xié)調(diào)器處于主動(dòng)待機(jī)模式,啟用滾動(dòng)升級(jí)功能。在協(xié)調(diào)器升級(jí)時(shí),Milvus能夠繼續(xù)響應(yīng)傳入請(qǐng)求。相比于早期版本,升級(jí)過(guò)程將不再需要完全移除協(xié)調(diào)器,減少了停機(jī)時(shí)間。
由于滾動(dòng)升級(jí)默認(rèn)是禁用的,需要在配置文件中明確啟用此功能。
(1)啟用滾動(dòng)升級(jí)
在配置文件中,將spec.components.enableRollingUpdate設(shè)置為true,并確保spec.components.image設(shè)置為目標(biāo)Milvus版本。
例如,修改如下:
(2)配置并執(zhí)行升級(jí)
如果希望縮短升級(jí)時(shí)間,可以將spec.components.imageUpdateMode設(shè)置為all,這將使Milvus同時(shí)更新所有pod的映像。還可以選擇將spec.components.imageUpdateMode設(shè)置為rollingDowngrade,以便將協(xié)調(diào)器pod映像替換為較低版本。
配置文件修改完成后,保存為 milvusupgrade.yml,并使用以下命令執(zhí)行補(bǔ)?。?/p>
kubectl patch -f milvusupgrade.yml
3、通過(guò)更改映像升級(jí)
如果希望通過(guò)更改映像進(jìn)行升級(jí),可以按照以下步驟操作:
創(chuàng)建并編輯milvusupgrade.配置文件,指定新的Milvus映像版本。
執(zhí)行升級(jí)命令:
kubectl patch -f milvusupgrade.
這種方法適用于快速升級(jí),但會(huì)造成短暫的服務(wù)停機(jī)。
4、遷移元數(shù)據(jù)
自Milvus 2.2.0起,Milvus的元數(shù)據(jù)與早期版本不兼容。因此升級(jí)到v2.5.1之前需要進(jìn)行元數(shù)據(jù)遷移。假設(shè)正在將Milvus從v2.1.4 升級(jí)到v2.5.1,以下是遷移的步驟。
(1)創(chuàng)建遷移配置文件
創(chuàng)建一個(gè) . 配置文件,設(shè)置name、sourceVersion和targetVersion。例如以下配置將Milvus從v2.1.4升級(jí)到v2.5.1:
(2)應(yīng)用新配置
運(yùn)行以下命令應(yīng)用新配置:
(3)檢查遷移狀態(tài)
執(zhí)行以下命令檢查遷移狀態(tài):
kubectl describe milvus release-name
如果輸出中的狀態(tài)為ready,則表示遷移成功。也可以使用以下命令檢查所有pod狀態(tài)是否為ready,以確保遷移過(guò)程無(wú)誤:
kubectl get pod
(4)刪除遷移文件
升級(jí)成功后,記得刪除 文件中的my-release-upgrade,以清理不再需要的配置。
二、使用Milvus Operator升級(jí)Milvus Standalone
1、升級(jí)Milvus操作符
升級(jí)Milvus操作符與上文介紹的集群升級(jí)相同,執(zhí)行以下命令:
將Milvus操作符升級(jí)到最新版本后,有以下選擇:
(1)將Milvus從v2.2.3或更高版本升級(jí)到2.5.1,可以進(jìn)行滾動(dòng)升級(jí)。
(2)將Milvus從v2.2.3之前的次版本升級(jí)到2.5.1,建議你通過(guò)更改映像版本來(lái)升級(jí)Milvus。
(3)將Milvus從v2.1.x升級(jí)到2.5.1,需要在實(shí)際升級(jí)前遷移元數(shù)據(jù)。
2、進(jìn)行滾動(dòng)升級(jí)
自Milvus 2.2.3起,你可以將Milvus協(xié)調(diào)器配置為主動(dòng)待機(jī)模式工作,并為它們啟用滾動(dòng)升級(jí)功能,這樣Milvus就能在協(xié)調(diào)器升級(jí)期間響應(yīng)傳入的請(qǐng)求。在以前的版本中,升級(jí)時(shí)需要移除協(xié)調(diào)器,然后再創(chuàng)建協(xié)調(diào)器,這可能會(huì)導(dǎo)致服務(wù)出現(xiàn)一定的停機(jī)時(shí)間。
基于Kubernetes提供的滾動(dòng)更新功能,Milvus操作符會(huì)根據(jù)部署的依賴關(guān)系強(qiáng)制執(zhí)行有序更新。此外,Milvus還實(shí)施了一種機(jī)制,確保其組件在升級(jí)期間與依賴于它們的組件保持兼容,從而大大減少了潛在的服務(wù)停機(jī)時(shí)間。
滾動(dòng)升級(jí)功能默認(rèn)為禁用。你需要通過(guò)配置文件明確啟用它。
在上述配置文件中,將spec.components.enableRollingUpdate設(shè)置為true ,將spec.components.image設(shè)置為所需的Milvus版本。
默認(rèn)情況下,Milvus會(huì)以有序的方式對(duì)協(xié)調(diào)器進(jìn)行滾動(dòng)升級(jí),即逐個(gè)替換協(xié)調(diào)器pod映像。要縮短升級(jí)時(shí)間,可以考慮將spec.components.imageUpdateMode設(shè)置為all?,這樣Milvus就會(huì)同時(shí)替換所有pod映像。
可以將spec.components.imageUpdateMode設(shè)置為rollingDowngrade?,讓Milvus用較低的版本替換協(xié)調(diào)器pod映像。
然后將配置保存為YAML文件(例如milvusupgrade.yml?),并將此配置文件修補(bǔ)到Milvus實(shí)例中,如下所示:
kubectl patch -f milvusupgrade.yml
3、通過(guò)更改映像升級(jí)Milvus
在正常情況下,可以通過(guò)更改映像將你的Milvus升級(jí)到最新版本。但要注意的是,用這種方法升級(jí)Milvus時(shí)會(huì)有一定的停機(jī)時(shí)間。
編寫(xiě)如下配置文件,并將其保存為milvusupgrade.yaml:
然后運(yùn)行以下命令執(zhí)行升級(jí):
kubectl patch -f milvusupgrade.yaml
4、遷移元數(shù)據(jù)
自Milvus 2.2.0起,元數(shù)據(jù)與以前版本的元數(shù)據(jù)不兼容。以下示例片段假定從Milvus 2.1.4升級(jí)到Milvus v2.5.1。
(1)創(chuàng)建用于元數(shù)據(jù)遷移的.yaml?文件
創(chuàng)建元數(shù)據(jù)遷移文件。下面是一個(gè)示例。需要在配置文件中指定name?、sourceVersion和targetVersion?。下面的示例將name設(shè)置為my-release-upgrade?,將sourceVersion設(shè)置為v2.1.4?,將targetVersion?設(shè)置為v2.5.1?。Milvus實(shí)例將從v2.1.4升級(jí)到 v2.5.1。
(2)應(yīng)用新配置
運(yùn)行以下命令應(yīng)用新配置。
(3)檢查元數(shù)據(jù)遷移狀態(tài)
運(yùn)行以下命令檢查元數(shù)據(jù)遷移的狀態(tài)。
kubectl describe milvus release-name
輸出中的狀態(tài)為ready意味著元數(shù)據(jù)遷移成功?;蛘咭部梢赃\(yùn)行kubectl get pod檢查所有pod。如果所有pod都是ready ,則元數(shù)據(jù)遷移成功。
(4)刪除my-release-upgrade
升級(jí)成功后需要?jiǎng)h除YAML文件中的my-release-upgrade?。