Helm을 사용하여 Kubernetes에서 Milvus 실행하기
이 페이지에서는 Milvus Helm 차트를 사용하여 Kubernetes에서 Milvus 인스턴스를 시작하는 방법을 설명합니다.
개요
Helm은 ‘차트(charts)’라고 하는 패키징 형식을 사용합니다. 차트는 관련 Kubernetes 리소스 집합을 설명하는 파일 모음입니다. Milvus는 Milvus 종속성 및 구성 요소를 배포하는 데 도움이 되는 일련의 차트를 제공합니다.
필수 조건
StorageClass를 설치하십시오. 설치된 StorageClass는 다음과 같이 확인할 수 있습니다.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false설치 전에 하드웨어 및 소프트웨어 요구 사항을 확인하십시오.
Milvus를 설치하기 전에 Milvus Sizing Tool을 사용하여 데이터 크기에 기반한 하드웨어 요구 사항을 추정하는 것이 좋습니다. 이를 통해 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를 배포합니다. 프로덕션 환경에서 사용하려면:
- Milvus 크기 조정 도구를 사용하여 데이터 크기에 따라 설정을 최적화하십시오
- 고급 구성 옵션에 대해서는 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 클러스터의 구성을 업데이트할 수 있습니다.
원하는 구성으로
values.yaml파일을 생성하십시오.다음은
proxy.http을 활성화하려는 경우를 가정합니다.extraConfigFiles: user.yaml: |+ proxy: http: enabled: true적용 가능한 구성 항목에 대해서는 시스템 구성을 참조하십시오.
values.yaml파일을 적용합니다.
helm upgrade my-release zilliztech/milvus --namespace my-namespace -f values.yaml
업데이트된 구성을 확인하십시오.
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를 설치한 후에는 다음을 수행할 수 있습니다:
'Hello Milvus'를 확인하여 Milvus의 기능을 살펴보세요.
Milvus의 기본 사용법을 알아보세요:
클라우드에 Milvus 클러스터 배포:
Milvus의 가시성 및 관리를 위한 직관적인 웹 인터페이스인 Milvus WebUI를 살펴보세요.
Milvus 데이터 백업을 위한 오픈소스 도구인 Milvus Backup을 살펴보세요.
Milvus 디버깅 및 동적 구성 업데이트를 위한 오픈 소스 도구인 Birdwatcher를 살펴보세요.
직관적인 Milvus 관리를 위한 오픈 소스 GUI 도구인 Attu를 살펴보세요.