Milvus Cluster mit Milvus Operator aufrüsten
Diese Anleitung beschreibt, wie Sie Ihren Milvus-Cluster mit Milvus Operator aktualisieren.
Aktualisieren Sie Ihren Milvus Operator
Führen Sie den folgenden Befehl aus, um die Version Ihres Milvus Operators auf v1.0.1 zu aktualisieren.
helm repo add zilliztech-milvus-operator https://zilliztech.github.io/milvus-operator/
helm repo update zilliztech-milvus-operator
helm -n milvus-operator upgrade milvus-operator zilliztech-milvus-operator/milvus-operator
Sobald Sie Ihren Milvus-Operator auf die neueste Version aktualisiert haben, haben Sie die folgenden Möglichkeiten:
- Um Milvus von v2.2.3 oder späteren Versionen auf 2.5.0-beta zu aktualisieren, können Sie ein Rolling Upgrade durchführen.
- Um Milvus von einem Minor-Release vor v2.2.3 auf 2.5.0-beta zu aktualisieren, sollten Sie Milvus aktualisieren, indem Sie seine Image-Version ändern.
- Um Milvus von v2.1.x auf 2.5.0-beta zu aktualisieren, müssen Sie die Metadaten vor dem eigentlichen Upgrade migrieren.
Durchführen eines rollenden Upgrades
Seit Milvus 2.2.3 können Sie Milvus-Koordinatoren so konfigurieren, dass sie im Aktiv-Standby-Modus arbeiten und die Funktion des rollenden Upgrades für sie aktivieren, so dass Milvus auf eingehende Anfragen während der Koordinator-Upgrades reagieren kann. In früheren Versionen müssen die Koordinatoren während eines Upgrades entfernt und neu erstellt werden, was zu einer gewissen Ausfallzeit des Dienstes führen kann.
Auf der Grundlage der von Kubernetes bereitgestellten rollierenden Aktualisierungsfunktionen erzwingt der Milvus-Operator eine geordnete Aktualisierung der Bereitstellungen entsprechend ihren Abhängigkeiten. Darüber hinaus implementiert Milvus einen Mechanismus, der sicherstellt, dass seine Komponenten während des Upgrades mit den von ihnen abhängigen Komponenten kompatibel bleiben, wodurch potenzielle Ausfallzeiten des Dienstes erheblich reduziert werden.
Die Funktion "Rolling Upgrade" ist standardmäßig deaktiviert. Sie müssen sie explizit über eine Konfigurationsdatei aktivieren.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: rollingUpgrade # Default value, can be omitted
image: milvusdb/milvus:v2.5.0-beta
In der obigen Konfigurationsdatei setzen Sie spec.components.enableRollingUpdate
auf true
und spec.components.image
auf die gewünschte Milvus-Version.
Standardmäßig führt Milvus rollende Upgrades für Koordinatoren in einer geordneten Weise durch, bei der die Pod-Images der Koordinatoren nacheinander ersetzt werden. Um die Upgrade-Zeit zu verkürzen, sollten Sie spec.components.imageUpdateMode
auf all
setzen, damit Milvus alle Pod-Images gleichzeitig ersetzt.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: all
image: milvusdb/milvus:v2.5.0-beta
Sie können spec.components.imageUpdateMode
auf rollingDowngrade
setzen, damit Milvus die Coordinator-Pod-Images durch eine niedrigere Version ersetzt.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: rollingDowngrade
image: milvusdb/milvus:<some-old-version>
Speichern Sie dann Ihre Konfiguration als YAML-Datei (z.B. milvusupgrade.yml
) und patchen Sie diese Konfigurationsdatei wie folgt in Ihre Milvus-Instanz:
kubectl patch -f milvusupgrade.yml
Upgrade von Milvus durch Änderung des Images
Im Normalfall können Sie Ihr Milvus einfach auf die neueste Version aktualisieren, indem Sie sein Image ändern. Beachten Sie jedoch, dass es zu einer gewissen Ausfallzeit kommt, wenn Sie Milvus auf diese Weise aktualisieren.
Stellen Sie eine Konfigurationsdatei wie folgt zusammen und speichern Sie sie als milvusupgrade.yaml:
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
# Omit other fields ...
components:
image: milvusdb/milvus:v2.5.0-beta
Führen Sie dann das Folgende aus, um das Upgrade durchzuführen:
kubectl patch -f milvusupgrade.yaml
Migrieren Sie die Metadaten
Seit Milvus 2.2.0 sind die Metadaten nicht mehr mit denen früherer Versionen kompatibel. Die folgenden Beispielschnipsel gehen von einem Upgrade von Milvus 2.1.4 auf Milvus 2.5.0-beta aus.
1. Erstellen Sie eine .yaml
Datei für die Migration von Metadaten
Erstellen Sie eine Metadaten-Migrationsdatei. Im Folgenden finden Sie ein Beispiel. Sie müssen name
, sourceVersion
und targetVersion
in der Konfigurationsdatei angeben. Im folgenden Beispiel wird name
auf my-release-upgrade
, sourceVersion
auf v2.1.4
und targetVersion
auf v2.5.0-beta
gesetzt. Dies bedeutet, dass Ihr Milvus-Cluster von v2.1.4 auf v2.5.0-beta aktualisiert wird.
apiVersion: milvus.io/v1beta1
kind: MilvusUpgrade
metadata:
name: my-release-upgrade
spec:
milvus:
namespace: default
name: my-release
sourceVersion: "v2.1.4"
targetVersion: "v2.5.0-beta"
# below are some omit default values:
# targetImage: "milvusdb/milvus:v2.5.0-beta"
# toolImage: "milvusdb/meta-migration:v2.2.0"
# operation: upgrade
# rollbackIfFailed: true
# backupPVC: ""
# maxRetry: 3
2. Übernehmen Sie die neue Konfiguration
Führen Sie den folgenden Befehl aus, um die neue Konfiguration zu erstellen.
$ kubectl create -f https://github.com/zilliztech/milvus-operator/blob/main/config/samples/beta/milvusupgrade.yaml
3. Überprüfen Sie den Status der Metadaten-Migration
Führen Sie den folgenden Befehl aus, um den Status Ihrer Metadaten-Migration zu überprüfen.
kubectl describe milvus release-name
Der Status ready
in der Ausgabe bedeutet, dass die Metadaten-Migration erfolgreich war.
Sie können auch kubectl get pod
ausführen, um alle Pods zu überprüfen. Wenn alle Pods ready
sind, ist die Metadaten-Migration erfolgreich.
4. Löschen Sie my-release-upgrade
Wenn das Upgrade erfolgreich ist, löschen Sie my-release-upgrade
in der YAML-Datei.