milvus-logo
LFAI
홈페이지
  • 관리 가이드

헬름 차트로 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.4.18로 [롤링 업그레이드 수행](#conduct-a-rolling-upgrade).

롤링 업그레이드 수행

Milvus 2.2.3부터는 Milvus 코디네이터가 활성-대기 모드에서 작동하도록 구성하고 롤링 업그레이드 기능을 활성화하여 코디네이터 업그레이드 중에 들어오는 요청에 응답할 수 있도록 할 수 있습니다. 이전 릴리스에서는 업그레이드 중에 코디네이터를 제거했다가 다시 생성해야 하므로 서비스 다운타임이 발생할 수 있습니다.

롤링 업그레이드를 하려면 코디네이터가 활성-대기 모드에서 작업해야 합니다. 제공되는 스크립트를 사용하여 코디네이터가 활성 대기 모드에서 작업하도록 구성하고 롤링 업그레이드를 시작할 수 있습니다.

쿠버네티스가 제공하는 롤링 업데이트 기능을 기반으로, 위의 스크립트는 종속성에 따라 배포를 순서대로 업데이트합니다. 또한, Milvus는 업그레이드 중에 해당 구성 요소가 종속된 구성 요소와 호환성을 유지하도록 하는 메커니즘을 구현하여 잠재적인 서비스 중단 시간을 크게 줄입니다.

이 스크립트는 헬름과 함께 설치된 밀버스의 업그레이드에만 적용된다. 다음 표에는 스크립트에서 사용할 수 있는 명령 플래그가 나열되어 있다.

파라미터설명기본값필수
iMilvus 인스턴스 이름NoneTrue
nMilvus가 설치된 네임스페이스입니다.defaultFalse
t대상 Milvus 버전NoneTrue
w새 Milvus 이미지 태그milvusdb/milvus:v2.2.3True
o작동updateFalse

Milvus 인스턴스의 모든 배포가 정상 상태에 있는지 확인했습니다. 다음 명령을 실행하여 Milvus 인스턴스를 2.4.18로 업그레이드할 수 있습니다.

sh rollingUpdate.sh -n default -i my-release -o update -t 2.4.18 -w 'milvusdb/milvus:v2.4.18'
  1. 이 스크립트는 배포의 업그레이드 순서를 하드코딩하며 변경할 수 없습니다.
  2. 이 스크립트는 kubectl patch 을 사용하여 배포를 업데이트하고 kubectl rollout status 을 사용하여 상태를 확인합니다.
  3. 이 스크립트는 kubectl patch 을 사용하여 배포의 app.kubernetes.io/version 레이블을 명령의 -t 플래그 뒤에 지정된 레이블로 업데이트합니다.

헬름을 사용하여 밀버스 업그레이드

밀버스를 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에만 적용됩니다. 프로세스 중에 오류가 발생하면 먼저 롤백 작업을 통해 이전 버전으로 롤백하세요.

다음 표에는 메타 마이그레이션을 위해 수행할 수 있는 작업이 나열되어 있습니다.

파라미터설명기본값필수
iMilvus 인스턴스 이름입니다.NoneTrue
nMilvus가 설치된 네임스페이스입니다.defaultFalse
s소스 Milvus 버전입니다.NoneTrue
t대상 Milvus 버전입니다.NoneTrue
r밀버스 메타의 루트 경로입니다.by-devFalse
w새 Milvus 이미지 태그입니다.milvusdb/milvus:v2.2.0False
m메타 마이그레이션 이미지 태그입니다.milvusdb/meta-migration:v2.2.0False
o메타 마이그레이션 작업입니다.migrateFalse
d마이그레이션이 완료된 후 마이그레이션 파드를 삭제할지 여부입니다.falseFalse
c메타 마이그레이션 pvc의 스토리지 클래스.default storage classFalse
e밀버스에서 사용하는 etcd 엔포인트.etcd svc installed with milvusFalse

1. 메타데이터 마이그레이션

  1. 마이그레이션 스크립트를 다운로드합니다.
  2. Milvus 구성 요소를 중지합니다. Milvus etcd의 라이브 세션은 마이그레이션 실패를 일으킬 수 있습니다.
  3. Milvus 메타데이터에 대한 백업을 생성합니다.
  4. Milvus 메타데이터를 마이그레이션합니다.
  5. 새 이미지로 Milvus 구성 요소를 시작합니다.

2. Milvus를 v2.1.x에서 2.2.0으로 업그레이드합니다.

다음 명령은 Milvus를 v2.1.4에서 2.2.0으로 업그레이드한다고 가정합니다. 필요에 맞는 버전으로 변경하세요.

  1. Milvus 인스턴스 이름, 소스 Milvus 버전, 대상 Milvus 버전을 지정합니다.

    ./migrate.sh -i my-release -s 2.1.4 -t 2.2.0
    
  2. Milvus가 기본 K8s 네임스페이스에 설치되지 않은 경우 -n 로 네임스페이스를 지정합니다.

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0
    
  3. Milvus가 사용자 지정 rootpath 과 함께 설치된 경우 -r 으로 루트 경로를 지정합니다.

    ./migrate.sh -i my-release -n milvus -s 2.1.4 -t 2.2.0 -r by-dev
    
  4. 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
    
  5. 마이그레이션이 완료된 후 마이그레이션 파드를 자동으로 제거하려면 -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
    
  6. 마이그레이션이 실패하면 롤백하고 다시 마이그레이션하세요.

    ./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
    

번역DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?