Helm 차트를 사용하여 GPU를 지원하는 Milvus 실행하기
이 페이지에서는 Helm 차트를 사용하여 GPU를 지원하는 Milvus 인스턴스를 시작하는 방법을 설명합니다.
개요
Helm은 ‘차트(chart)’라고 하는 패키징 형식을 사용합니다. 차트는 관련 Kubernetes 리소스 세트를 설명하는 파일 모음입니다. Milvus는 Milvus 종속성 및 구성 요소를 배포하는 데 도움이 되는 일련의 차트를 제공합니다. Milvus Helm 차트는 Helm 패키지 관리자를 사용하여 Kubernetes(K8s) 클러스터에서 Milvus 배포를 부트스트랩하는 솔루션입니다.
필수 조건
StorageClass를 설치하십시오. 설치된 StorageClass는 다음과 같이 확인할 수 있습니다.
$ kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBIINDINGMODE ALLOWVOLUMEEXPANSION AGE standard (default) k8s.io/minikube-hostpath Delete Immediate false설치 전에 하드웨어 및 소프트웨어 요구 사항을 확인하십시오.
이미지 가져오기 과정에서 문제가 발생하면, 문제 세부 정보를 기재하여 community@zilliz.com으로 문의해 주시면 필요한 지원을 제공해 드리겠습니다.
Milvus용 Helm 차트 설치
Helm은 Milvus를 신속하게 배포할 수 있도록 도와주는 K8s 패키지 관리자입니다.
- Milvus Helm 저장소를 추가하십시오.
$ helm repo add milvus https://zilliztech.github.io/milvus-helm/
https://milvus-io.github.io/milvus-helm/ 에 있는 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
아카이브된 저장소는 4.0.31 버전까지의 차트에 대해서는 여전히 사용할 수 있습니다. 그 이후 릴리스의 경우, 대신 새로운 저장소를 사용하십시오.
- 로컬에서 차트를 업데이트합니다.
$ helm repo update
Milvus 시작
Helm 차트를 설치한 후에는 Kubernetes에서 Milvus를 시작할 수 있습니다. 이 섹션에서는 GPU를 지원하는 Milvus를 시작하는 단계를 안내해 드립니다.
릴리스 이름, 차트, 변경할 매개변수를 지정하여 Helm을 통해 Milvus를 시작해야 합니다. 이 가이드에서는 릴리스 이름으로 my-release 를 사용합니다. 다른 릴리스 이름을 사용하려면 다음 명령어에서 my-release 를 사용 중인 릴리스 이름으로 대체하십시오.
Milvus에서는 하나 이상의 GPU 장치를 Milvus에 할당할 수 있습니다.
1. 단일 GPU 장치 할당
GPU를 지원하는 Milvus에서는 하나 이상의 GPU 장치를 할당할 수 있습니다.
Milvus 클러스터
cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" queryNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" EOF$ helm install my-release milvus/milvus -f custom-values.yamlMilvus 독립형
cat <<EOF > custom-values.yaml standalone: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" EOF$ helm install my-release milvus/milvus --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false -f custom-values.yaml
2. 여러 GPU 장치 할당
단일 GPU 장치 외에도 Milvus에 여러 개의 GPU 장치를 할당할 수 있습니다.
Milvus 클러스터
cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" queryNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" EOF위의 구성에서는 4개의 CPU를 사용할 수 있으며, 각 dataNode와 queryNode는 2개의 GPU를 사용합니다. dataNode와 queryNode에 서로 다른 GPU를 할당하려면, 구성 파일에서 다음과 같이 `
extraEnv`를 설정하여 구성을 수정할 수 있습니다.cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" extraEnv: - name: CUDA_VISIBLE_DEVICES value: "0" queryNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" extraEnv: - name: CUDA_VISIBLE_DEVICES value: "1" EOF$ helm install my-release milvus/milvus -f custom-values.yaml- 릴리스 이름에는 영문자, 숫자 및 대시만 포함되어야 합니다. 릴리스 이름에는 점(.)을 사용할 수 없습니다.
- Helm을 사용하여 Milvus를 설치할 경우, 기본 명령줄은 클러스터 버전의 Milvus를 설치합니다. Milvus를 독립형으로 설치할 때는 추가 설정이 필요합니다.
- Kubernetes의 사용 중단된 API 마이그레이션 가이드에 따르면, v1.25부터 PodDisruptionBudget의 policy/v1beta1 API 버전은 더 이상 제공되지 않습니다. 대신 policy/v1 API 버전을 사용하도록 매니페스트와 API 클라이언트를 마이그레이션할 것을 권장합니다.
Kubernetes v1.25 이상에서 여전히 PodDisruptionBudget의 policy/v1beta1 API 버전을 사용하는 사용자를 위한 임시 해결책으로, 다음 명령어를 실행하여 Milvus를 설치할 수 있습니다:
helm install my-release milvus/milvus --set pulsar.bookkeeper.pdb.usePolicy=false,pulsar.broker.pdb.usePolicy=false,pulsar.proxy.pdb.usePolicy=false,pulsar.zookeeper.pdb.usePolicy=false - 자세한 내용은 Milvus Helm 차트 및 Helm 문서를 참조하십시오.
Milvus 독립형
cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" queryNode: resources: requests: nvidia.com/gpu: "2" limits: nvidia.com/gpu: "2" EOF위의 구성에서는 사용 가능한 CPU가 4개이며, 각 dataNode와 queryNode는 GPU 2개를 사용합니다. dataNode와 queryNode에 서로 다른 GPU를 할당하려면, 구성 파일에서 extraEnv를 다음과 같이 설정하여 구성을 수정할 수 있습니다:
cat <<EOF > custom-values.yaml dataNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" extraEnv: - name: CUDA_VISIBLE_DEVICES value: "0" queryNode: resources: requests: nvidia.com/gpu: "1" limits: nvidia.com/gpu: "1" extraEnv: - name: CUDA_VISIBLE_DEVICES value: "1" EOF$ helm install my-release milvus/milvus --set cluster.enabled=false --set etcd.replicaCount=1 --set minio.mode=standalone --set pulsarv3.enabled=false -f custom-values.yaml
2. Milvus 상태 확인
다음 명령어를 실행하여 Milvus 상태를 확인하십시오:
$ kubectl get pods
Milvus가 시작되면 모든 포드에 대해 ‘ READY ’ 열에 ‘ 1/1 ’가 표시됩니다.
Milvus 클러스터
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 3m24s my-release-etcd-1 1/1 Running 0 3m24s my-release-etcd-2 1/1 Running 0 3m24s my-release-milvus-datanode-698dbf7d77-rjkkq 1/1 Running 0 3m24s my-release-milvus-mixcoord-856d666559-rpj8z 1/1 Running 0 3m24s my-release-milvus-proxy-7f7cf47689-pzltw 1/1 Running 0 3m24s my-release-milvus-querynode-7fb6d5b5f8-92phj 1/1 Running 0 3m24s my-release-milvus-streamingnode-5867bfbcbf-cg9xx 1/1 Running 0 3m24s my-release-minio-0 1/1 Running 0 3m24s my-release-minio-1 1/1 Running 0 3m24s my-release-minio-2 1/1 Running 0 3m24s my-release-minio-3 1/1 Running 0 3m24s my-release-pulsarv3-bookie-0 1/1 Running 0 3m24s my-release-pulsarv3-bookie-1 1/1 Running 0 3m24s my-release-pulsarv3-bookie-2 1/1 Running 0 3m24s my-release-pulsarv3-bookie-init-p8hcq 0/1 Completed 0 3m24s my-release-pulsarv3-broker-0 1/1 Running 0 3m24s my-release-pulsarv3-broker-1 1/1 Running 0 3m24s my-release-pulsarv3-proxy-0 1/1 Running 0 3m24s my-release-pulsarv3-proxy-1 1/1 Running 0 3m24s my-release-pulsarv3-pulsar-init-8kjsj 0/1 Completed 0 3m24s my-release-pulsarv3-recovery-0 1/1 Running 0 3m24s my-release-pulsarv3-zookeeper-0 1/1 Running 0 3m24s my-release-pulsarv3-zookeeper-1 1/1 Running 0 3m24s my-release-pulsarv3-zookeeper-2 1/1 Running 0 3m24sMilvus 독립형
NAME READY STATUS RESTARTS AGE my-release-etcd-0 1/1 Running 0 30s my-release-milvus-standalone-54c4f88cb9-f84pf 1/1 Running 0 30s my-release-minio-5564fbbddc-mz7f5 1/1 Running 0 30s
3. 로컬 포트를 Milvus로 포워딩
Milvus 서버가 어떤 로컬 포트를 수신 대기 중인지 확인하십시오. pod 이름을 실제 이름으로 대체하십시오.
$ kubectl get pod my-release-milvus-proxy-6bd7f5587-ds2xv --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
그런 다음, 다음 명령어를 실행하여 로컬 포트를 Milvus가 서비스를 제공하는 포트로 포워딩합니다.
$ kubectl port-forward service/my-release-milvus 27017:19530
Forwarding from 127.0.0.1:27017 -> 19530
선택적으로, 위 명령어에서 27017:19530 대신 :19530 을 사용하면 kubectl 가 로컬 포트를 자동으로 할당해 주므로 포트 충돌을 직접 관리할 필요가 없습니다.
기본적으로 kubectl의 포트 포워딩은 localhost 에서만 수신 대기합니다. Milvus가 선택한 IP 주소 또는 모든 IP 주소에서 수신 대기하도록 하려면 address 플래그를 사용하십시오. 다음 명령어는 호스트 머신의 모든 IP 주소에서 포트 포워딩이 수신 대기하도록 설정합니다.
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus 27017:19530
Forwarding from 0.0.0.0:27017 -> 19530
이제 포워딩된 포트를 사용하여 Milvus에 연결할 수 있습니다.
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 제거
다음 명령어를 실행하여 Milvus를 제거하십시오.
$ helm uninstall my-release
Storage V3는 기본적으로 비활성화되어 있습니다. Storage V3에 의존하는 기능을 사용하기 전에 활성화하십시오. 요구 사항 및 호환성 고려 사항에 대해서는 Storage V3를 참조하십시오.
다음 단계
Milvus를 설치한 후에는 다음을 수행할 수 있습니다.
'빠른 시작'을 확인하여 Milvus의 기능을 살펴보세요.
Milvus의 기본 작동 방식을 알아보세요:
클라우드에 Milvus 클러스터 배포:
Milvus의 가시성 및 관리를 위한 직관적인 웹 인터페이스인 Milvus WebUI를 살펴보세요.
Milvus 데이터 백업을 위한 오픈소스 도구인 Milvus Backup을 살펴보세요.
Milvus 디버깅 및 동적 구성 업데이트를 위한 오픈 소스 도구인 Birdwatcher를 살펴보세요.
직관적인 Milvus 관리를 위한 오픈 소스 GUI 도구인 Attu를 살펴보세요.