Milvus Operator를 사용하여 Kubernetes에서 Milvus 실행하기
이 페이지에서는 Milvus Operator를 사용하여 Kubernetes에서 Milvus 인스턴스를 시작하는 방법을 설명합니다.
개요
Milvus Operator는 대상 Kubernetes(K8s) 클러스터에 전체 Milvus 서비스 스택을 배포하고 관리할 수 있도록 지원하는 솔루션입니다. 이 스택에는 모든 Milvus 구성 요소와 etcd, Pulsar, MinIO와 같은 관련 종속성이 포함됩니다.
필수 조건
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 Operator 설치
Milvus Operator는 Kubernetes 사용자 정의 리소스(Custom Resources)를 기반으로 Milvus 클러스터 사용자 정의 리소스를 정의합니다. 사용자 정의 리소스가 정의되면 K8s API를 선언적인 방식으로 사용하여 Milvus 배포 스택을 관리함으로써 확장성과 고가용성을 보장할 수 있습니다.
Helm을 사용하여 Milvus Operator를 설치하려면 다음 명령어를 실행하십시오.
$ helm install milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
설치 과정이 끝나면 다음과 유사한 출력이 표시됩니다.
NAME: milvus-operator
LAST DEPLOYED: Thu Jul 7 13:18:40 2022
NAMESPACE: milvus-operator
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Milvus Operator Is Starting, use `kubectl get -n milvus-operator deploy/milvus-operator` to check if its successfully installed
If Operator not started successfully, check the checker's log with `kubectl -n milvus-operator logs job/milvus-operator-checker`
Full Installation doc can be found in https://github.com/zilliztech/milvus-operator/blob/main/docs/installation/installation.md
Quick start with `kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_minimum.yaml`
More samples can be found in https://github.com/zilliztech/milvus-operator/tree/main/config/samples
CRD Documentation can be found in https://github.com/zilliztech/milvus-operator/tree/main/docs/CRD
이전에 Milvus Operator를 설치한 적이 있다면 다음 명령어를 사용하여 업그레이드하십시오.
helm upgrade milvus-operator \
-n milvus-operator --create-namespace \
--wait --wait-for-jobs \
https://github.com/zilliztech/milvus-operator/releases/download/v1.3.7/milvus-operator-1.3.7.tgz
kubectl 를 사용하여 Milvus Operator를 설치하려면 다음 명령어를 실행하십시오.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
설치 과정이 끝나면 다음과 유사한 출력이 표시됩니다.
namespace/milvus-operator created
customresourcedefinition.apiextensions.k8s.io/milvusclusters.milvus.io created
serviceaccount/milvus-operator-controller-manager created
role.rbac.authorization.k8s.io/milvus-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/milvus-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/milvus-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/milvus-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/milvus-operator-proxy-rolebinding created
configmap/milvus-operator-manager-config created
service/milvus-operator-controller-manager-metrics-service created
service/milvus-operator-webhook-service created
deployment.apps/milvus-operator-controller-manager created
다음과 같이 Milvus Operator 포드가 실행 중인지 확인할 수 있습니다:
$ kubectl get pods -n milvus-operator
NAME READY STATUS RESTARTS AGE
milvus-operator-5fd77b87dc-msrk4 1/1 Running 0 46s
Milvus 배포
1. Milvus 클러스터 배포
Milvus Operator 포드가 실행 중이면 다음과 같이 Milvus 클러스터를 배포할 수 있습니다.
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_woodpecker.yaml
위의 명령어는 Woodpecker를 메시지 큐로 사용하는(v2.6.24 권장) Milvus 클러스터와 스트리밍 노드를 포함한 모든 새로운 아키텍처 구성 요소를 배포합니다.
이번 배포의 아키텍처 주요 특징:
- 메시지 큐: Woodpecker 사용 (인프라 유지보수 부담 감소)
- 스트리밍 노드: 향상된 데이터 처리를 위해 활성화됨
- Mix 코디네이터: 효율성 향상을 위해 코디네이터 구성 요소를 통합
이러한 설정을 사용자 정의하려면 Milvus Sizing Tool을 사용하여 실제 데이터 크기에 따라 구성을 조정한 후, 해당 YAML 파일을 다운로드하는 것을 권장합니다. 구성 매개변수에 대한 자세한 내용은 Milvus 시스템 구성 체크리스트를 참조하십시오.
- 릴리스 이름에는 영문자, 숫자 및 대시만 포함되어야 합니다. 릴리스 이름에 점은 사용할 수 없습니다.
- 모든 구성 요소가 단일 파드에 포함된 독립형(standalone) 모드로 Milvus 인스턴스를 배포할 수도 있습니다. 이를 위해 위 명령어의 구성 파일 URL을 다음과 같이 변경하십시오.
https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_default.yaml
2. Milvus 클러스터 상태 확인
다음 명령어를 실행하여 Milvus 클러스터 상태를 확인하십시오.
$ kubectl get milvus my-release -o yaml
Milvus 클러스터가 준비되면 위 명령어의 출력은 다음과 비슷해야 합니다. ` status.status ` 필드가 ` Unhealthy`로 표시된다면, Milvus 클러스터가 아직 생성 중인 것입니다.
apiVersion: milvus.io/v1alpha1
kind: Milvus
metadata:
...
status:
conditions:
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
reason: StorageReady
status: "True"
type: StorageReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: Pulsar is ready
reason: PulsarReady
status: "True"
type: PulsarReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: Etcd endpoints is healthy
reason: EtcdReady
status: "True"
type: EtcdReady
- lastTransitionTime: "xxxx-xx-xxTxx:xx:xxZ"
message: All Milvus components are healthy
reason: MilvusClusterHealthy
status: "True"
type: MilvusReady
endpoint: my-release-milvus.default:19530
status: Healthy
Milvus Operator는 etcd, Pulsar, MinIO와 같은 Milvus 종속성을 생성한 다음, 프록시, 코디네이터, 노드와 같은 Milvus 구성 요소를 생성합니다.
Milvus 클러스터가 준비되면, Milvus 클러스터 내 모든 파드의 상태는 다음과 비슷해야 합니다.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
my-release-etcd-0 1/1 Running 0 2m36s
my-release-etcd-1 1/1 Running 0 2m36s
my-release-etcd-2 1/1 Running 0 2m36s
my-release-milvus-datanode-58955c65b9-j4j7s 1/1 Running 0 92s
my-release-milvus-mixcoord-686f84968f-jcv5d 1/1 Running 0 92s
my-release-milvus-proxy-646f48fc7c-4lctb 1/1 Running 0 92s
my-release-milvus-querynode-0-d89d7677b-x7j7q 1/1 Running 0 91s
my-release-milvus-streamingnode-556bdcc87c-2qwcc 1/1 Running 0 92s
my-release-minio-0 1/1 Running 0 2m36s
my-release-minio-1 1/1 Running 0 2m36s
my-release-minio-2 1/1 Running 0 2m35s
my-release-minio-3 1/1 Running 0 2m35s
3. 로컬 포트를 Milvus로 포워딩하기
다음 명령어를 실행하여 Milvus 클러스터가 서비스를 제공하는 포트를 확인하세요.
$ kubectl get pod my-release-milvus-proxy-84f67cdb7f-pg6wf --template
='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
19530
출력 결과를 보면 Milvus 인스턴스가 기본 포트인 19530에서 서비스를 제공하는 것을 확인할 수 있습니다.
Milvus를 독립형 모드로 배포한 경우, pod 이름을 my-release-milvus-proxy-xxxxxxxxxx-xxxxx 에서 my-release-milvus-xxxxxxxxxx-xxxxx 으로 변경하십시오.
그런 다음, 다음 명령어를 실행하여 로컬 포트를 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 구성 업데이트
다음과 같이 patch 명령을 실행하여 Milvus 클러스터의 구성을 확인하고 업데이트할 수 있습니다.
다음 명령을 실행하여 적용될 구성 내용을 미리 확인할 수 있습니다.
다음은 `
spec.components.disableMetric` 매개변수를falsems로 업데이트하려는 경우를 가정합니다.$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}' \ --dry-run=client -o yaml적용 가능한 구성 항목에 대해서는 ‘시스템 구성’을 참조하십시오.
구성을 업데이트합니다.
$ kubectl patch milvus my-release --type='merge'\ -p '{"spec":{"components":{"disableMetric":false}}}'
Milvus WebUI에 액세스
Milvus에는 브라우저를 통해 액세스할 수 있는 Milvus WebUI라는 내장 GUI 도구가 함께 제공됩니다. Milvus Web UI는 간단하고 직관적인 인터페이스를 통해 시스템 가시성을 향상시킵니다. Milvus Web UI를 사용하여 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 클러스터를 제거하십시오.
$ kubectl delete milvus my-release
- 기본 구성을 사용하여 Milvus 클러스터를 삭제할 경우, etcd, Pulsar, MinIO와 같은 종속성은 삭제되지 않습니다. 따라서 다음에 동일한 Milvus 클러스터 인스턴스를 설치할 때 이러한 종속성이 다시 사용됩니다.
- Milvus 클러스터와 함께 종속성 및 영구 볼륨 클레임(PVC)을 삭제하려면 구성 파일을 참조하십시오.
Milvus Operator 제거
Milvus Operator를 제거하는 방법도 두 가지가 있습니다.
Helm을 사용하여 제거
$ helm -n milvus-operator uninstall milvus-operator
kubectl을 사용하여 제거
$ kubectl delete -f https://raw.githubusercontent.com/zilliztech/milvus-operator/v1.3.7/deploy/manifests/deployment.yaml
다음 단계
Docker에 Milvus를 설치한 후에는 다음을 수행할 수 있습니다:
'Hello Milvus'를 확인하여 Milvus의 기능을 살펴보세요.
Milvus의 기본 작동 방식을 알아보세요:
클라우드에 Milvus 클러스터 배포:
Milvus의 가시성 및 관리를 위한 직관적인 웹 인터페이스인 Milvus WebUI를 살펴보세요.
Milvus 데이터 백업을 위한 오픈소스 도구인 Milvus Backup을 살펴보세요.
Milvus 디버깅 및 동적 구성 업데이트를 위한 오픈 소스 도구인 Birdwatcher를 살펴보세요.
직관적인 Milvus 관리를 위한 오픈 소스 GUI 도구인 Attu를 살펴보세요.