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=v2.6.24 \
  --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를 사용하여 v2.6.24에 최적화된 설정으로 Milvus 클러스터를 배포합니다:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --set pulsarv3.enabled=false \
  --set woodpecker.enabled=true \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

이 명령어의 기능:

  • Woodpecker를 메시지 큐로 사용합니다(유지 관리 부담을 줄이기 위해 권장됨)
  • 성능 향상을 위해 새로운 스트리밍 노드 (Streaming Node ) 구성 요소를 활성화합니다
  • 기존 인덱스 노드를 비활성화합니다(해당 기능은 이제 데이터 노드에서 처리됨)
  • Pulsar를 비활성화하고 대신 Woodpecker를 사용하도록 설정합니다

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

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

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

대체 메시지 큐 옵션:

Woodpecker 대신 Pulsar (기존 선택 사항)를 사용하려는 경우:

helm install my-release zilliztech/milvus \
  --set image.all.tag=v2.6.24 \
  --set streaming.enabled=true \
  --set indexNode.enabled=false

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

중요 사항:

  • 릴리스 명명 규칙: 영문자, 숫자, 하이픈만 사용하십시오(점(.)은 허용되지 않음)
  • Kubernetes v1.25 이상: PodDisruptionBudget 관련 문제가 발생하면 다음 해결 방법을 사용하십시오:
    helm install my-release zilliztech/milvus \
      --set pulsar.bookkeeper.pdb.usePolicy=false \
      --set pulsar.broker.pdb.usePolicy=false \
      --set pulsar.proxy.pdb.usePolicy=false \
      --set pulsar.zookeeper.pdb.usePolicy=false
    

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

2. Milvus 클러스터 상태 확인

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

kubectl get pods

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

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-streaming-node-xxxxxxxxx       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
my-release-pulsar-autorecovery-86f5dbdf77-lchpc  1/1    Running   0        3m24s
my-release-pulsar-bookkeeper-0                   1/1    Running   0        3m23s
my-release-pulsar-bookkeeper-1                   1/1    Running   0        98s
my-release-pulsar-broker-556ff89d4c-2m29m        1/1    Running   0        3m23s
my-release-pulsar-proxy-6fbd75db75-nhg4v         1/1    Running   0        3m23s
my-release-pulsar-zookeeper-0                    1/1    Running   0        3m23s
my-release-pulsar-zookeeper-metadata-98zbr       0/1   Completed  0        3m24s

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

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

포트 포워딩이 설정되면(다음 단계 참조) 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 웹 UI에 접속할 수 있습니다.

오프라인 설치

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

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

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

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

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

  • 모든 Milvus 구성 요소가 단일 파드에 포함되는 독립형(standalone) 모드로 Milvus 인스턴스를 설치하려면, 대신 ` helm template my-release --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false 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

다음 단계

Docker에 Milvus를 설치한 후에는 다음을 수행할 수 있습니다: