헬름 차트로 Milvus 클러스터 업그레이드하기
이 가이드는 Milvus 헬름 차트를 사용하여 Milvus 클러스터를 업그레이드하는 방법을 설명합니다.
전제 조건
- 헬름 버전 >= 3.14.0
- 쿠버네티스 버전 >= 1.20.0
밀버스-헬름 차트 버전 4.2.21부터 pulsar-v3.x 차트를 종속 요소로 도입했습니다. 이전 버전과의 호환성을 위해 헬름을 v3.14 이상 버전으로 업그레이드하고 helm upgrade
을 사용할 때마다 --reset-then-reuse-values
옵션을 추가해야 한다.
밀버스 헬름 차트 확인
다음 명령어를 실행하여 새로운 밀버스 버전을 확인한다.
$ helm repo update zilliztech
$ helm search repo zilliztech/milvus --versions
Milvus 헬름 차트 리포지토리( https://milvus-io.github.io/milvus-helm/
)가 아카이브되었으며, 다음과 같이 https://zilliztech.github.io/milvus-helm/
에서 추가 업데이트를 받을 수 있습니다:
helm repo add zilliztech https://zilliztech.github.io/milvus-helm
helm repo update
# upgrade existing helm release
helm upgrade my-release zilliztech/milvus --reset-then-reuse-values
보관된 리포지토리는 4.0.31까지의 차트에 대해 계속 사용할 수 있습니다. 이후 릴리스에서는 새 리포지토리를 사용하세요.
NAME CHART VERSION APP VERSION DESCRIPTION
zilliztech/milvus 4.1.34 2.4.5 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.33 2.4.4 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.32 2.4.3 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.31 2.4.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.30 2.4.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.29 2.4.0 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.24 2.3.11 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.23 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.22 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.21 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.20 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.18 2.3.10 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.18 2.3.9 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.17 2.3.8 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.16 2.3.7 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.15 2.3.5 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.14 2.3.6 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.13 2.3.5 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.12 2.3.5 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.11 2.3.4 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.10 2.3.3 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.9 2.3.3 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.8 2.3.2 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.7 2.3.2 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.6 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.5 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.4 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.3 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.2 2.3.1 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.1 2.3.0 Milvus is an open-source vector database built ...
zilliztech/milvus 4.1.0 2.3.0 Milvus is an open-source vector database built ...
Milvus의 업그레이드 경로는 다음과 같이 선택할 수 있습니다:
v2.2.3 이전 마이너 릴리스에서 v2.5.0-베타로 업그레이드하려면헬름을 사용하여 Milvus를 업그레이드 한다.
Milvus v2.1.x에서 v2.5.0-베타로 업그레이드하기 전에메타데이터를 마이그레이션한다.
헬름을 사용하여 밀버스 업그레이드
밀버스를 v2.2.3 이전의 마이너 릴리스에서 최신 버전으로 업그레이드하려면 다음 명령을 실행한다:
helm repo update zilliztech
helm upgrade my-release zilliztech/milvus --reset-then-reuse-values --version=4.1.24 # use the helm chart version here
앞의 명령에서 헬름 차트 버전을 사용한다. 헬름 차트 버전을 구하는 방법에 대한 자세한 내용은 Milvus 버전 확인을 참조한다.
메타데이터 마이그레이션
Milvus 2.2.0부터는 메타데이터가 이전 릴리즈의 메타데이터와 호환되지 않는다. 다음 예제 코드 조각은 Milvus 2.1.4에서 Milvus 2.2.0으로 업그레이드하는 것을 가정한다.
1. Milvus 버전 확인
$ helm list
을 실행하여 Milvus 앱 버전을 확인합니다. APP VERSION
이 2.1.4임을 확인할 수 있습니다.
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
new-release default 1 2022-11-21 15:41:25.51539 +0800 CST deployed milvus-3.2.18 2.1.4
2. 실행 중인 포드 확인
$ kubectl get pods
을 실행하여 실행 중인 파드를 확인합니다. 다음과 같은 출력을 확인할 수 있습니다.
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 21m
my-release-etcd-1 1/1 Running 0 21m
my-release-etcd-2 1/1 Running 0 21m
my-release-milvus-datacoord-664c58798d-fl75s 1/1 Running 0 21m
my-release-milvus-datanode-5f75686c55-xfg2r 1/1 Running 0 21m
my-release-milvus-indexcoord-5f98b97589-2l48r 1/1 Running 0 21m
my-release-milvus-indexnode-857b4ddf98-vmd75 1/1 Running 0 21m
my-release-milvus-proxy-6c548f787f-scspp 1/1 Running 0 21m
my-release-milvus-querycoord-c454f44cd-dwmwq 1/1 Running 0 21m
my-release-milvus-querynode-76bb4946d-lbrz6 1/1 Running 0 21m
my-release-milvus-rootcoord-7764c5b686-62msm 1/1 Running 0 21m
my-release-minio-0 1/1 Running 0 21m
my-release-minio-1 1/1 Running 0 21m
my-release-minio-2 1/1 Running 0 21m
my-release-minio-3 1/1 Running 0 21m
my-release-pulsar-bookie-0 1/1 Running 0 21m
my-release-pulsar-bookie-1 1/1 Running 0 21m
my-release-pulsar-bookie-2 1/1 Running 0 21m
my-release-pulsar-bookie-init-tjxpj 0/1 Completed 0 21m
my-release-pulsar-broker-0 1/1 Running 0 21m
my-release-pulsar-proxy-0 1/1 Running 0 21m
my-release-pulsar-pulsar-init-c8vvc 0/1 Completed 0 21m
my-release-pulsar-recovery-0 1/1 Running 0 21m
my-release-pulsar-zookeeper-0 1/1 Running 0 21m
my-release-pulsar-zookeeper-1 1/1 Running 0 20m
my-release-pulsar-zookeeper-2 1/1 Running 0 20m
3. 이미지 태그 확인
파드의 이미지 태그를 확인합니다 my-release-milvus-proxy-6c548f787f-scspp
. Milvus 클러스터의 릴리즈가 v2.1.4임을 확인할 수 있습니다.
$ kubectl get pods my-release-milvus-proxy-6c548f787f-scspp -o=jsonpath='{$.spec.containers[0].image}'
# milvusdb/milvus:v2.1.4
4. 메타데이터 마이그레이션
Milvus 2.2의 주요 변경 사항은 세그먼트 인덱스의 메타데이터 구조입니다. 따라서 Milvus를 v2.1.x에서 v2.2.0으로 업그레이드하는 동안 헬름을 사용하여 메타데이터를 마이그레이션해야 한다. 다음은 메타데이터를 안전하게 마이그레이션하기 위한 스크립트이다.
이 스크립트는 K8s 클러스터에 설치된 Milvus에만 적용됩니다. 프로세스 중에 오류가 발생하면 먼저 롤백 작업을 통해 이전 버전으로 롤백하세요.
다음 표에는 메타 마이그레이션을 위해 수행할 수 있는 작업이 나열되어 있습니다.
파라미터 | 설명 | 기본값 | 필수 |
---|---|---|---|
i | Milvus 인스턴스 이름입니다. | None | True |
n | Milvus가 설치된 네임스페이스입니다. | default | False |
s | 소스 Milvus 버전입니다. | None | True |
t | 대상 Milvus 버전입니다. | None | True |
r | 밀버스 메타의 루트 경로입니다. | by-dev | False |
w | 새 Milvus 이미지 태그입니다. | milvusdb/milvus:v2.2.0 | False |
m | 메타 마이그레이션 이미지 태그입니다. | milvusdb/meta-migration:v2.2.0 | False |
o | 메타 마이그레이션 작업입니다. | migrate | False |
d | 마이그레이션이 완료된 후 마이그레이션 파드를 삭제할지 여부입니다. | false | False |
c | 메타 마이그레이션 pvc의 스토리지 클래스. | default storage class | False |
e | 밀버스에서 사용하는 etcd 엔포인트. | etcd svc installed with milvus | False |
1. 메타데이터 마이그레이션
- 마이그레이션 스크립트를 다운로드합니다.
- Milvus 구성 요소를 중지합니다. Milvus etcd의 라이브 세션은 마이그레이션 실패를 일으킬 수 있습니다.
- Milvus 메타데이터에 대한 백업을 생성합니다.
- Milvus 메타데이터를 마이그레이션합니다.
- 새 이미지로 Milvus 구성 요소를 시작합니다.
2. Milvus를 v2.1.x에서 2.2.0으로 업그레이드합니다.
다음 명령은 Milvus를 v2.1.4에서 2.2.0으로 업그레이드한다고 가정합니다. 필요에 맞는 버전으로 변경하세요.
밀버스 인스턴스 이름, 소스 밀버스 버전, 대상 밀버스 버전을 지정합니다.
./migrate.sh -i my-release -s 2.1.4 -t 2.2.0
Milvus가 기본 K8s 네임스페이스에 설치되지 않은 경우
-n
로 네임스페이스를 지정합니다../migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0
Milvus가 사용자 지정
rootpath
과 함께 설치된 경우-r
으로 루트 경로를 지정합니다../migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev
Milvus가 사용자 지정
image
과 함께 설치된 경우 이미지 태그를-w
으로 지정합니다../migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -w milvusdb/milvus:v2.2.0
마이그레이션이 완료된 후 마이그레이션 파드를 자동으로 제거하려면
-d true
을 설정합니다../migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -w milvusdb/milvus:v2.2.0 -d true
마이그레이션이 실패하면 롤백하고 다시 마이그레이션하세요.
./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -o rollback -w milvusdb/milvus:v2.1.4 ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev -o migrate -w milvusdb/milvus:v2.2.0