Helm을 사용하여 Kubernetes에서 Milvus 실행하기

이 페이지에서는 Milvus Helm 차트를 사용하여 Kubernetes에서 Milvus 인스턴스를 시작하는 방법을 설명합니다.

개요

Helm은 ‘차트(charts)’라고 하는 패키징 형식을 사용합니다. 차트는 관련 Kubernetes 리소스 집합을 설명하는 파일 모음입니다. Milvus는 Milvus의 종속성 및 구성 요소를 배포하는 데 도움이 되는 일련의 차트를 제공합니다.

필수 조건

이미지 가져오기 과정에서 문제가 발생하면, 문제 세부 정보를 기재하여 community@zilliz.com으로 문의해 주시면 필요한 지원을 제공해 드리겠습니다.

Milvus Helm 차트 설치

Milvus Helm 차트를 설치하기 전에 Milvus Helm 저장소를 추가해야 합니다.

helm repo add zilliztech https://zilliztech.github.io/milvus-helm/

https://github.com/milvus-io/milvus-helm 에 있던 Milvus Helm 차트 저장소는 아카이브 처리되었습니다. 현재는 https://github.com/zilliztech/milvus-helm 에 있는 새로운 저장소를 사용하고 있습니다. 아카이브된 저장소는 4.0.31 버전까지의 차트에 대해서는 여전히 사용할 수 있지만, 그 이후 릴리스의 경우 새로운 저장소를 사용하십시오.

그런 다음 다음과 같이 저장소에서 Milvus 차트를 가져오십시오:

$ helm repo update

이 명령어를 실행하면 언제든지 최신 Milvus Helm 차트를 가져올 수 있습니다.

온라인 설치

1. Milvus 클러스터 배포

Helm 차트를 설치하면 Kubernetes에서 Milvus를 시작할 수 있습니다. 이 섹션에서는 Milvus 클러스터 배포 과정을 안내합니다.

대신 독립형(스탠드얼론) 배포를 원하시나요?

개발이나 테스트를 위해 Milvus를 독립형 모드(단일 노드)로 배포하려는 경우 다음 명령어를 사용하십시오.

helm install my-release zilliztech/milvus \
  --set image.all.tag=v3.0.5 \
  --set cluster.enabled=false \
  --set pulsarv3.enabled=false \
  --set standalone.messageQueue=woodpecker \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true

참고: 독립 실행 모드에서는 Woodpecker를 기본 메시지 큐로 사용하며, Streaming Node 구성 요소를 활성화합니다. 독립 실행 모드 배포에서는 Woodpecker가 Milvus 포드에 내장된 형태로 실행되며, 전용 Woodpecker 서비스 (별도의 포드)는 분산/클러스터 배포에서만 사용됩니다. 자세한 내용은 아키텍처 개요 및 Woodpecker를 참조하십시오.

Milvus 클러스터 배포:

Woodpecker 서비스 모드의 경우, Milvus 3.0.3 이상과 Woodpecker v0.1.46 이상을 함께 사용하는 것을 권장합니다.

다음 명령어는 Woodpecker를 권장 메시지 큐로 사용하여 v3.0.5에 최적화된 설정으로 Milvus 클러스터를 배포합니다:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v3.0.5 \
  --set woodpecker.enabled=true \
  --set woodpecker.image.tag=v0.1.46 \
  --set streaming.enabled=true \
  --set streaming.woodpecker.embedded=false \
  --set indexNode.enabled=false

이 명령어의 기능:

  • Woodpecker를 메시지 큐로 사용합니다(유지보수 부담 경감을 위해 권장됨).
  • Woodpecker를 스트리밍 노드에 내장하지 않고 전용 서비스 (별도의 StatefulSet) 로 실행합니다
  • 성능 향상을 위해 새로운 스트리밍 노드 (Streaming Node ) 구성 요소를 활성화합니다
  • 기존 인덱스 노드를 비활성화합니다(이 기능은 이제 데이터 노드에서 처리됨)

Milvus 2.6.x의 아키텍처 변경 사항:

  • 메시지 큐: 이제 Woodpecker 사용을 권장합니다(Pulsar에 비해 인프라 유지보수 부담을 줄여줍니다)
  • 새로운 구성 요소: 스트리밍 노드가 도입되었으며 기본적으로 활성화되어 있습니다
  • 통합된 컴포넌트: 인덱스 노드와 데이터 노드가 단일 데이터 노드로 통합되었습니다

아키텍처에 대한 자세한 내용은 아키텍처 개요를 참조하십시오.

대체 메시지 큐: Woodpecker 대신 Pulsar, Kafka 또는 RocksMQ를 사용하여 배포하려면 ‘선택적 종속성’을 참조하십시오.

다음 단계: 위의 명령어는 권장 구성으로 Milvus를 배포합니다. 프로덕션 환경에서 사용하려면:

중요 사항:

  • 릴리스 이름 지정: 영문자, 숫자 및 하이픈만 사용하십시오(점은 허용되지 않음).

자세한 내용은 Milvus Helm 차트 및 Helm 문서를 참조하십시오.

2. Milvus 클러스터 상태 확인

팟 상태를 확인하여 배포가 성공적으로 완료되었는지 확인하십시오:

kubectl get pods

모든 파드가 “Running” 상태를 표시할 때까지 기다리십시오. v3.0.5 구성에서는 다음과 유사한 파드가 표시되어야 합니다:

NAME                                             READY  STATUS   RESTARTS  AGE
my-release-etcd-0                                1/1    Running   0        3m23s
my-release-etcd-1                                1/1    Running   0        3m23s
my-release-etcd-2                                1/1    Running   0        3m23s
my-release-milvus-datanode-68cb87dcbd-4khpm      1/1    Running   0        3m23s
my-release-milvus-mixcoord-7fb9488465-dmbbj      1/1    Running   0        3m23s
my-release-milvus-proxy-6bd7f5587-ds2xv          1/1    Running   0        3m24s
my-release-milvus-querynode-5cd8fff495-k6gtg     1/1    Running   0        3m24s
my-release-milvus-streamingnode-7b8cfc769c-mqmsm  1/1    Running   0        3m24s
my-release-milvus-woodpecker-0                   1/1    Running   0        3m24s
my-release-milvus-woodpecker-1                   1/1    Running   0        3m24s
my-release-milvus-woodpecker-2                   1/1    Running   0        3m24s
my-release-milvus-woodpecker-3                   1/1    Running   0        3m24s
my-release-minio-0                               1/1    Running   0        3m23s
my-release-minio-1                               1/1    Running   0        3m23s
my-release-minio-2                               1/1    Running   0        3m23s
my-release-minio-3                               1/1    Running   0        3m23s

확인해야 할 주요 구성 요소:

  • Milvus 구성 요소: mixcoord, datanode, querynode, proxy, streamingnode
  • 의존성: etcd (메타데이터), minio (오브젝트 스토리지), woodpecker (메시지 큐)

streaming.woodpecker.embedded=false 를 사용하면 Woodpecker는 전용 StatefulSet (my-release-milvus-woodpecker)으로 실행되며, 기본적으로 4개의 복제본(3노드의 쿼럼에 내결함성을 위한 예비 노드 1개 추가)을 갖습니다. woodpecker.replicaCount 값을 3 미만으로 설정하지 마십시오)으로, 헤드리스 서비스가 전면에 배치되고 MinIO를 스토리지 백엔드로 사용합니다. 따라서 클러스터에는 스트리밍 노드와 별개의 woodpecker 포드 세트가 존재합니다.

포트 포워딩이 설정되면(다음 단계 참조) http://127.0.0.1:9091/webui/ 에서 Milvus 웹 UI 에 액세스할 수도 있습니다. 자세한 내용은 Milvus 웹 UI를 참조하십시오.

3. Milvus에 연결하기

Kubernetes 외부에서 Milvus 클러스터에 연결하려면 포트 포워딩을 설정해야 합니다.

포트 포워딩 설정:

kubectl port-forward service/my-release-milvus 27017:19530

이 명령어는 로컬 포트 27017 를 Milvus 포트 19530 로 포워딩합니다. 다음과 같은 메시지가 표시되어야 합니다:

Forwarding from 127.0.0.1:27017 -> 19530

연결 세부 정보:

  • 로컬 연결: localhost:27017
  • Milvus 기본 포트: 19530

포트 포워딩 옵션:

  • 로컬 포트 자동 할당: 27017:19530 대신 :19530 을 사용하여 kubectl이 사용 가능한 포트를 선택하도록 합니다
  • 모든 인터페이스에서 수신 대기: 다른 컴퓨터에서의 연결을 허용하려면 --address 0.0.0.0 를 추가하세요:
    kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
    
  • 독립형 배포: 독립형 모드를 사용하는 경우 서비스 이름은 동일하게 유지됩니다

Milvus를 사용하는 동안이 터미널을 열어 두십시오. 이제 localhost:27017 에서 어떤 Milvus SDK를 사용하든 Milvus에 연결할 수 있습니다.

(선택 사항) Milvus 구성 업데이트

values.yaml 파일을 편집하고 다시 적용하여 Milvus 클러스터의 구성을 업데이트할 수 있습니다.

  1. 원하는 구성이 포함된 values.yaml 파일을 생성하십시오.

    다음 내용은 proxy.http 를 활성화하려는 경우를 가정합니다.

    extraConfigFiles:
      user.yaml: |+
        proxy:
          http:
            enabled: true
    

    적용 가능한 구성 항목에 대해서는 시스템 구성을 참조하십시오.

  2. values.yaml 파일을 적용합니다.

helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
  1. 업데이트된 구성을 확인하십시오.

    helm get values my-release
    

    출력 결과에 업데이트된 구성이 표시되어야 합니다.

Milvus WebUI에 액세스

Milvus에는 브라우저를 통해 액세스할 수 있는 Milvus WebUI라는 내장 GUI 도구가 포함되어 있습니다. Milvus WebUI는 간단하고 직관적인 인터페이스를 통해 시스템 가시성을 향상시킵니다. Milvus WebUI를 사용하여 Milvus의 구성 요소 및 종속성에 대한 통계와 메트릭을 관찰하고, 데이터베이스 및 수집 세부 정보를 확인하며, Milvus의 상세 구성 목록을 확인할 수 있습니다. Milvus WebUI에 대한 자세한 내용은 Milvus WebUI를 참조하십시오.

Milvus WebUI에 액세스하려면 프록시 포드를 로컬 포트로 포트 포워딩해야 합니다.

$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27018:9091
Forwarding from 0.0.0.0:27018 -> 9091

이제 http://localhost:27018 에서 Milvus Web UI에 접속할 수 있습니다.

오프라인 설치

네트워크가 제한된 환경에 있는 경우, 이 섹션의 절차에 따라 Milvus 클러스터를 시작하십시오.

1. Milvus 매니페스트 가져오기

다음 명령어를 실행하여 Milvus 매니페스트를 가져옵니다.

$ helm template my-release zilliztech/milvus > milvus_manifest.yaml

위의 명령어는 Milvus 클러스터용 차트 템플릿을 생성하고, 그 결과를 milvus_manifest.yaml 라는 매니페스트 파일에 저장합니다. 이 매니페스트를 사용하면 Milvus 클러스터와 그 구성 요소 및 종속성을 별도의 파드에 설치할 수 있습니다.

  • 모든 Milvus 구성 요소가 단일 파드에 포함되는 독립 실행 모드(standalone mode)로 Milvus 인스턴스를 설치하려면, 대신 ` helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false --set standalone.messageQueue=woodpecker --set woodpecker.enabled=true --set streaming.enabled=true zilliztech/milvus > milvus_manifest.yaml `을 실행하여 독립 실행 모드의 Milvus 인스턴스에 대한 차트 템플릿을 생성해야 합니다.
  • Milvus 구성을 변경하려면 value.yaml 템플릿을 다운로드하고, 원하는 설정을 입력한 다음, helm template -f values.yaml my-release zilliztech/milvus > milvus_manifest.yaml 를 사용하여 해당 설정에 맞게 매니페스트를 생성하십시오.

2. 이미지 가져오기 스크립트 다운로드

이미지 가져오기 스크립트는 Python으로 개발되었습니다. requirement.txt 파일에 포함된 스크립트와 그 종속성을 함께 다운로드해야 합니다.

$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/requirements.txt
$ wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/offline/save_image.py

3. 이미지 가져오기 및 저장

다음 명령어를 실행하여 필요한 이미지를 가져와 저장하십시오.

$ pip3 install -r requirements.txt
$ python3 save_image.py --manifest milvus_manifest.yaml

이미지는 현재 디렉토리 내의 ‘ images ’라는 하위 폴더로 가져옵니다.

4. 이미지 불러오기

이제 다음과 같이 네트워크 제한 환경 내의 호스트에 이미지를 로드할 수 있습니다:

$ for image in $(find . -type f -name "*.tar.gz") ; do gunzip -c $image | docker load; done

5. Milvus 배포

$ kubectl apply -f milvus_manifest.yaml

지금까지는 온라인 설치 안내의 2단계와 3단계를 따라 클러스터 상태를 확인하고 로컬 포트를 Milvus로 포워딩할 수 있습니다.

실행 중인 Milvus 클러스터 업그레이드

실행 중인 Milvus 클러스터를 최신 버전으로 업그레이드하려면 다음 명령을 실행하십시오:

$ helm repo update
$ helm upgrade my-release zilliztech/milvus --reset-then-reuse-values

Milvus 제거

다음 명령어를 실행하여 Milvus를 제거하십시오.

$ helm uninstall my-release

선택적 종속성

이 배포 환경에서는 메시지 큐로 Woodpecker, 메타데이터로 etcd, 오브젝트 스토리지로 MinIO를 사용합니다. 다른 메시지 큐를 사용하거나 외부 오브젝트 스토리지/메타데이터를 연결하려면 다음을 참조하십시오:

Storage V3는 기본적으로 비활성화되어 있습니다. Storage V3에 의존하는 기능을 사용하기 전에 활성화해야 합니다. 요구 사항 및 호환성 고려 사항에 대해서는 Storage V3를 참조하십시오.

다음 단계

Docker에 Milvus를 설치했다면 다음을 수행할 수 있습니다: