밀버스 오퍼레이터로 밀버스 클러스터 업그레이드하기
이 가이드는 Milvus 오퍼레이터로 Milvus 클러스터를 업그레이드하는 방법을 설명합니다.
Milvus 오퍼레이터 업그레이드
다음 명령어를 실행하여 Milvus 운영자 버전을 v1.0.1로 업그레이드합니다.
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
Milvus 운영자를 최신 버전으로 업그레이드한 후에는 다음과 같은 옵션을 선택할 수 있습니다:
- Milvus를 v2.2.3 이상 릴리스에서 2.5.0-베타로 업그레이드하려면 롤링 업그레이드를 수행하면 됩니다.
- v2.2.3 이전 부 릴리스에서 2.5.0-베타로 Milvus를 업그레이드하려면 이미지 버전을 변경하여 Milvus를 업그레이드하는 것이 좋습니다.
- Milvus를 v2.1.x에서 2.5.0-베타로 업그레이드하려면 실제 업그레이드 전에 메타데이터를 마이그레이션해야 합니다.
롤링 업그레이드 수행
Milvus 2.2.3부터는 Milvus 코디네이터가 활성-대기 모드에서 작동하도록 구성하고 롤링 업그레이드 기능을 활성화하여 코디네이터 업그레이드 중에 들어오는 요청에 응답할 수 있도록 할 수 있습니다. 이전 릴리스에서는 업그레이드 중에 코디네이터를 제거했다가 다시 생성해야 하므로 서비스 다운타임이 발생할 수 있습니다.
Milvus 운영자는 Kubernetes에서 제공하는 롤링 업데이트 기능을 기반으로 종속성에 따라 배포를 순서대로 업데이트합니다. 또한 Milvus는 업그레이드 중에 구성 요소가 종속된 구성 요소와 호환성을 유지하도록 보장하는 메커니즘을 구현하여 잠재적인 서비스 중단 시간을 크게 줄입니다.
롤링 업그레이드 기능은 기본적으로 비활성화되어 있습니다. 구성 파일을 통해 명시적으로 활성화해야 합니다.
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
위의 구성 파일에서 spec.components.enableRollingUpdate
을 true
으로 설정하고 spec.components.image
을 원하는 Milvus 버전으로 설정합니다.
기본적으로 Milvus는 코디네이터에 대한 롤링 업그레이드를 수행하여 코디네이터 포드 이미지를 차례로 교체하는 순서대로 진행합니다. 업그레이드 시간을 줄이려면 spec.components.imageUpdateMode
을 all
으로 설정하여 Milvus가 모든 포드 이미지를 동시에 교체하도록 하세요.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: all
image: milvusdb/milvus:v2.5.0-beta
spec.components.imageUpdateMode
을 rollingDowngrade
으로 설정하여 Milvus가 코디네이터 파드 이미지를 하위 버전으로 대체하도록 할 수 있습니다.
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
components:
enableRollingUpdate: true
imageUpdateMode: rollingDowngrade
image: milvusdb/milvus:<some-old-version>
그런 다음 구성을 YAML 파일(예: milvusupgrade.yml
)로 저장하고 다음과 같이 이 구성 파일을 Milvus 인스턴스에 패치합니다:
kubectl patch -f milvusupgrade.yml
이미지를 변경하여 Milvus 업그레이드
일반적인 경우에는 이미지를 변경하여 Milvus를 최신 버전으로 간단히 업데이트할 수 있습니다. 그러나 이러한 방식으로 Milvus를 업그레이드할 경우 일정 시간 동안 다운타임이 발생한다는 점에 유의하세요.
다음과 같이 구성 파일을 작성하고 milvusupgrade.yaml로 저장합니다:
apiVersion: milvus.io/v1beta1
kind: Milvus
metadata:
name: my-release
spec:
# Omit other fields ...
components:
image: milvusdb/milvus:v2.5.0-beta
그런 다음 다음을 실행하여 업그레이드를 수행합니다:
kubectl patch -f milvusupgrade.yaml
메타데이터 마이그레이션
Milvus 2.2.0부터는 메타데이터가 이전 릴리즈의 메타데이터와 호환되지 않습니다. 다음 예제 코드 조각은 Milvus 2.1.4에서 Milvus 2.5.0-beta로 업그레이드하는 경우를 가정합니다.
1. 메타데이터 마이그레이션을 위한 .yaml
파일 만들기
메타데이터 마이그레이션 파일을 만듭니다. 다음은 예시입니다. 설정 파일에 name
, sourceVersion
, targetVersion
을 지정해야 합니다. 다음 예에서는 name
을 my-release-upgrade
으로 , sourceVersion
을 v2.1.4
으로 , targetVersion
을 v2.5.0-beta
으로 설정합니다. 즉, Milvus 클러스터가 v2.1.4에서 v2.5.0-beta로 업그레이드됩니다.
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. 새 구성 적용
다음 명령을 실행하여 새 구성을 생성합니다.
$ kubectl create -f https://github.com/zilliztech/milvus-operator/blob/main/config/samples/beta/milvusupgrade.yaml
3. 메타데이터 마이그레이션 상태 확인
다음 명령을 실행하여 메타데이터 마이그레이션 상태를 확인합니다.
kubectl describe milvus release-name
출력에 ready
상태가 표시되면 메타데이터 마이그레이션이 성공했음을 의미합니다.
또는 kubectl get pod
을 실행하여 모든 파드를 확인할 수도 있습니다. 모든 파드가 ready
이면 메타데이터 마이그레이션이 성공한 것입니다.
4. 삭제 my-release-upgrade
업그레이드가 성공하면 YAML 파일에서 my-release-upgrade
을 삭제합니다.