헬름으로 쿠버네티스에서 밀버스 실행하기

이 페이지는 밀버스 헬름 차트를 사용하여 쿠버네티스에서 밀버스 인스턴스를 시작하는 방법을 설명한다.

개요

헬름은 차트라는 패키징 형식을 사용한다. 차트는 관련 쿠버네티스 리소스 집합을 설명하는 파일 모음이다. 밀버스는 밀버스 의존성과 컴포넌트를 배포하는 데 도움이 되는 차트 세트를 제공한다.

전제 조건

이미지를 가져오는 데 문제가 발생하면 community@zilliz.com 으로 문의하여 문제에 대한 자세한 내용을 알려주시면 필요한 지원을 제공해 드리겠습니다.

Milvus 헬름 차트 설치

밀버스 헬름 차트를 설치하기 전에 밀버스 헬름 리포지토리를 추가해야 합니다.

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

Milvus Helm Charts 리포지토리( https://github.com/milvus-io/milvus-helm )가 아카이브되었습니다. 이제 https://github.com/zilliztech/milvus-helm 에서 새 리포지토리를 사용합니다. 보관된 리포지토리는 4.0.31까지의 차트에 계속 사용할 수 있지만 이후 릴리스에서는 새 리포지토리를 사용하세요.

그런 다음 다음과 같이 리포지토리에서 Milvus 차트를 가져옵니다:

$ helm repo update

언제든지 이 명령을 실행하여 최신 Milvus 헬름 차트를 가져올 수 있습니다.

온라인 설치

1. 밀버스 클러스터 배포

헬름 차트를 설치했으면, 쿠버네티스에서 밀버스를 시작할 수 있다. 이 섹션에서는 Milvus 클러스터를 배포하는 방법을 안내한다.

대신 독립형 배포가 필요하신가요?

개발 또는 테스트를 위해 독립 실행형 모드(단일 노드)로 Milvus를 배포하려면 이 명령을 사용하세요:

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

참고: 독립 실행형 모드는 기본 메시지 큐로 딱따구리를 사용하며 스트리밍 노드 구성 요소를 활성화합니다. 자세한 내용은 아키텍처 개요딱따구리 사용하기를 참조하세요.

Milvus 클러스터 배포:

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

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

이 명령이 수행하는 작업

  • 메시지 큐로 Woodpecker를 사용합니다(유지보수 감소를 위해 권장).
  • 성능 향상을 위해 새로운 스트리밍 노드 구성 요소를 활성화합니다.
  • 레거시 인덱스 노드를 비활성화합니다(이제 데이터 노드에서 기능을 처리합니다).
  • Pulsar를 비활성화하여 대신 Woodpecker 사용

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

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

전체 아키텍처에 대한 자세한 내용은 아키텍처 개요를 참조하세요.

대체 메시지 큐 옵션:

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

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

다음 단계:위의 명령은 권장 구성으로 Milvus를 배포합니다. 프로덕션용:

중요 참고 사항

  • 릴리스 이름 지정: 문자, 숫자, 대시만 사용하세요(점 사용 불가).
  • 쿠버네티스 v1.25+: 파드장애예산 문제가 발생하면 이 해결 방법을 사용하세요:
    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
    

자세한 내용은 밀버스 헬름 차트와 헬름 문서를 참고한다.

2. 밀버스 클러스터 상태 확인

파드 상태를 확인하여 배포가 성공했는지 확인한다:

kubectl get pods

모든 파드가 "실행 중" 상태가 표시될 때까지 기다립니다. v2.6.15 구성에서는 다음과 유사한 파드가 표시되어야 합니다:

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

확인해야 할 주요 구성 요소

  • 밀버스 컴포넌트 mixcoord, datanode, querynode, proxy, streaming-node
  • 종속성: etcd (메타데이터), minio (오브젝트 스토리지), pulsar (메시지 큐)

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

3. Milvus에 연결하기

쿠버네티스 외부에서 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 Web UI는 간단하고 직관적인 인터페이스로 시스템 관찰성을 향상시킵니다. Milvus Web UI를 사용하여 Milvus의 구성 요소 및 종속성에 대한 통계 및 메트릭을 관찰하고, 데이터베이스 및 수집 세부 정보를 확인하고, 자세한 Milvus 구성을 나열할 수 있습니다. 밀버스 웹 UI에 대한 자세한 내용은 밀버스 웹 UI를 참조하세요.

Milvus 웹 UI에 액세스할 수 있도록 하려면 프록시 포드를 로컬 포트로 포트 포워딩해야 합니다.

$ 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 구성 요소가 단일 포드 내에 포함된 독립형 모드에서 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를 설치했으면 다음을 수행할 수 있습니다: