쿠버네티스에 밀버스 배포하기: Kubernetes 사용자를 위한 단계별 가이드
Milvus는 벡터 표현을 통해 방대한 양의 비정형 데이터를 저장, 색인 및 검색하도록 설계된 오픈 소스 벡터 데이터베이스로, 유사성 검색, 시맨틱 검색, 검색 증강 생성(RAG), 추천 엔진 및 기타 머신 러닝 작업과 같은 AI 기반 애플리케이션에 적합합니다.
하지만 Milvus를 더욱 강력하게 만드는 것은 Kubernetes와의 원활한 통합입니다. Kubernetes 애호가라면 이 플랫폼이 확장 가능한 분산 시스템을 오케스트레이션하는 데 완벽하다는 것을 알고 계실 것입니다. Milvus는 Kubernetes의 기능을 최대한 활용하여 분산된 Milvus 클러스터를 쉽게 배포, 확장 및 관리할 수 있습니다. 이 가이드는 Milvus 운영자를 사용하여 Kubernetes에서 Milvus를 설정하기 위한 명확한 단계별 안내를 제공합니다.
전제 조건
시작하기 전에 다음 전제 조건이 갖추어져 있는지 확인하세요:
Kubernetes 클러스터가 실행 중입니다. 로컬에서 테스트하는 경우,
minikube
.kubectl
Kubernetes 클러스터와 상호 작용하도록 설치 및 구성.파드, 서비스, 배포와 같은 기본 Kubernetes 개념에 익숙해야 합니다.
1단계: 미니큐브 설치(로컬 테스트용)
로컬 Kubernetes 환경을 설정해야 하는 경우, minikube
도구가 적합합니다. 공식 설치 지침은 미니큐브 시작하기 페이지에 나와 있습니다.
1. 미니큐브 설치
미니큐브 릴리즈 페이지를 방문하여 운영 체제에 적합한 버전을 다운로드하세요. macOS/Linux의 경우 다음 명령을 사용할 수 있습니다:
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
2. 미니큐브 시작하기
$ minikube start
3. 클러스터와 상호 작용하기
이제 미니큐브 내부의 kubectl로 클러스터와 상호 작용할 수 있습니다. kubectl을 설치하지 않은 경우, 미니큐브는 기본적으로 적절한 버전을 다운로드합니다.
$ minikube kubectl cluster-info
또는 더 쉽게 사용할 수 있도록 kubectl
이라는 이름의 미니큐브 바이너리에 대한 심볼릭 링크를 생성할 수 있습니다.
$ sudo ln -s $(which minikube) /usr/local/bin/kubectl
$ kubectl cluster-info
2단계: 스토리지클래스 구성
쿠버네티스에서 스토리지클래스는 워크로드에 사용할 수 있는 스토리지 유형을 정의하여 다양한 스토리지 구성을 유연하게 관리할 수 있도록 해준다. 계속 진행하기 전에, 클러스터에서 기본 스토리지클래스를 사용할 수 있는지 확인해야 한다. 필요한 경우 이를 확인하고 구성하는 방법은 다음과 같습니다.
1. 설치된 StorageClass 확인
쿠버네티스 클러스터에서 사용 가능한 스토리지클래스를 확인하려면 다음 명령을 실행한다:
$ kubectl get sc
그러면 클러스터에 설치된 스토리지 클래스 목록이 표시됩니다. 기본 StorageClass가 이미 구성된 경우, (default)
로 표시됩니다.
2. 기본 스토리지 클래스 구성(필요한 경우) 2.
기본 StorageClass가 설정되어 있지 않은 경우 YAML 파일에 정의하여 만들 수 있습니다. 다음 예제를 사용하여 기본 StorageClass를 생성합니다:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: default-storageclass
provisioner: k8s.io/minikube-hostpath
이 YAML 구성은 로컬 개발 환경에서 일반적으로 사용되는 minikube-hostpath
프로비저너를 사용하는 default-storageclass
이라는 StorageClass
을 정의합니다.
3. StorageClass 적용
default-storageclass.yaml
파일이 생성되면 다음 명령을 사용하여 클러스터에 적용합니다:
$ kubectl apply -f default-storageclass.yaml
이렇게 하면 클러스터에 대한 기본 StorageClass가 설정되어 향후 스토리지 요구 사항을 적절히 관리할 수 있습니다.
3단계: Milvus 오퍼레이터를 사용하여 Milvus 설치하기
Milvus Operator는 배포, 확장 및 업데이트를 관리하여 Kubernetes에 Milvus를 배포하는 작업을 간소화합니다. Milvus Operator를 설치하기 전에, Milvus Operator가 사용하는 웹훅 서버에 대한 인증서를 제공하는 cert-manager를 설치해야 합니다.
1. 인증서 관리자 설치
밀버스 오퍼레이터는 안전한 통신을 위해 인증서를 관리하기 위해 cert-manager가 필요합니다. cert-manager 버전 1.1.3 이상을 설치해야 합니다. 설치하려면 다음 명령을 실행합니다:
$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.3/cert-manager.yaml
설치 후 다음을 실행하여 cert-manager 파드가 실행 중인지 확인합니다:
$ kubectl get pods -n cert-manager
2. 밀버스 오퍼레이터 설치
인증 매니저가 실행 중이면 Milvus 오퍼레이터를 설치할 수 있습니다. 다음 명령을 실행하여 kubectl
을 사용하여 배포합니다:
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/deploy/manifests/deployment.yaml
다음 명령을 사용하여 Milvus Operator 파드가 실행 중인지 확인할 수 있습니다:
$ kubectl get pods -n milvus-operator
3. Milvus 클러스터 배포
Milvus Operator 파드가 실행 중이면, 운영자와 함께 Milvus 클러스터를 배포할 수 있습니다. 다음 명령은 기본 구성을 사용하여 별도의 파드에 구성 요소 및 종속 요소와 함께 Milvus 클러스터를 배포합니다:
$ kubectl apply -f https://raw.githubusercontent.com/zilliztech/milvus-operator/main/config/samples/milvus_cluster_default.yaml
Milvus 설정을 사용자 정의하려면 YAML 파일을 자체 구성 YAML 파일로 대체해야 합니다. 파일을 수동으로 편집하거나 생성하는 것 외에도 Milvus 크기 조정 도구를 사용하여 구성을 조정한 다음 해당 YAML 파일을 다운로드할 수 있습니다.
Milvus 설정을 사용자 지정하려면 기본 YAML 파일을 사용자 지정 구성으로 바꿔야 합니다. 이 파일을 수동으로 편집하거나 생성하여 특정 요구 사항에 맞게 조정할 수 있습니다.
또는 보다 간소화된 접근 방식을 위해 Milvus 크기 조정 도구를 사용할 수 있습니다. 이 도구를 사용하면 리소스 할당 및 스토리지 옵션과 같은 다양한 설정을 조정한 다음 원하는 구성으로 해당 YAML 파일을 다운로드할 수 있습니다. 이렇게 하면 Milvus 배포가 특정 사용 사례에 맞게 최적화됩니다.
그림: Milvus 사이징 도구
배포를 완료하는 데 시간이 다소 걸릴 수 있습니다. 명령을 통해 Milvus 클러스터의 상태를 확인할 수 있습니다:
$ kubectl get milvus my-release
Milvus 클러스터가 준비되면 Milvus 클러스터의 모든 파드가 실행 중이거나 완료되어야 합니다:
$ kubectl get pods
4단계: Milvus 클러스터에 액세스하기
Milvus 클러스터가 배포되면, 로컬 포트를 Milvus 서비스 포트로 포워딩하여 클러스터에 액세스해야 합니다. 다음 단계에 따라 서비스 포트를 검색하고 포트 포워딩을 설정하세요.
1. 서비스 포트 가져오기
먼저 다음 명령을 사용하여 서비스 포트를 식별합니다. <YOUR_MILVUS_PROXY_POD>
를 일반적으로 my-release-milvus-proxy-
로 시작하는 Milvus 프록시 파드의 이름으로 바꿉니다:
$ kubectl get pod <YOUR_MILVUS_PROXY_POD> --template ='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}'
이 명령은 Milvus 서비스가 사용 중인 포트 번호를 반환합니다.
2. 포트 포워딩
Milvus 클러스터에 로컬로 액세스하려면 다음 명령을 사용하여 로컬 포트를 서비스 포트로 전달합니다. <YOUR_LOCAL_PORT>
을 사용하려는 로컬 포트로 바꾸고 <YOUR_SERVICE_PORT>
을 이전 단계에서 검색한 서비스 포트로 바꿉니다:
$ kubectl port-forward --address 0.0.0.0 service/my-release-milvus <YOUR_LOCAL_PORT>:<YOUR_SERVICE_PORT>
이 명령을 사용하면 포트 포워딩이 호스트 컴퓨터의 모든 IP 주소에서 수신 대기할 수 있습니다. localhost
에서만 수신 대기할 서비스가 필요한 경우 --address 0.0.0.0
옵션을 생략할 수 있습니다.
포트 포워딩이 설정되면 추가 작업 또는 통합을 위해 지정된 로컬 포트를 통해 Milvus 클러스터에 액세스할 수 있습니다.
5단계: Python SDK를 사용하여 Milvus에 연결하기
Milvus 클러스터가 실행 중이면 이제 Milvus SDK를 사용하여 클러스터와 상호 작용할 수 있습니다. 이 예에서는 Milvus의 Python SDK인 PyMilvus를 사용하여 클러스터에 연결하고 기본 작업을 수행하겠습니다.
1. PyMilvus 설치
Python을 통해 Milvus와 상호 작용하려면 pymilvus
패키지를 설치해야 합니다:
$ pip install pymilvus
2. Milvus에 연결
다음은 Milvus 클러스터에 연결하고 컬렉션 생성과 같은 기본 작업을 수행하는 방법을 보여주는 샘플 Python 스크립트입니다.
from pymilvus import MilvusClient
# Connect to the Milvus server
client = MilvusClient(uri="http://localhost:<YOUR_LOCAL_PORT>")
# Create a collection
collection_name = "example_collection"
if client.has_collection(collection_name):
client.drop_collection(collection_name)
client.create_collection(
collection_name=collection_name,
dimension=768, # The vectors we will use in this demo has 768 dimensions
)
설명:
Milvus에 연결: 이 스크립트는 4단계에서 설정한 로컬 포트를 사용하여
localhost
에서 실행 중인 Milvus 서버에 연결합니다.컬렉션 만들기:
example_collection
이라는 이름의 컬렉션이 이미 존재하는지 확인하고 존재하는 경우 삭제한 다음 768차원의 벡터로 새 컬렉션을 만듭니다.
이 스크립트는 Milvus 클러스터에 대한 연결을 설정하고 컬렉션을 생성하여 벡터 삽입 및 유사도 검색 수행과 같은 보다 복잡한 작업을 위한 시작점 역할을 합니다.
결론
Kubernetes의 분산 설정에서 Milvus를 배포하면 대규모 벡터 데이터를 관리할 수 있는 강력한 기능을 통해 원활한 확장성과 고성능 AI 기반 애플리케이션을 구현할 수 있습니다. 이 가이드를 따라 Milvus Operator를 사용하여 Milvus를 설정하는 방법을 배웠으므로 프로세스를 간소화하고 효율적으로 만들 수 있습니다.
Milvus를 계속 살펴보면서 증가하는 수요를 충족하기 위해 클러스터를 확장하거나 Amazon EKS, Google Cloud 또는 Microsoft Azure와 같은 클라우드 플랫폼에 배포하는 것을 고려해 보세요. 향상된 관리 및 모니터링을 위해 Milvus Backup, Birdwatcher, Attu와 같은 도구는 배포의 상태와 성능을 유지 관리하는 데 유용한 지원을 제공합니다.
이제 Kubernetes에서 Milvus의 잠재력을 최대한 활용하여 행복한 배포를 할 준비가 되었습니다! 🚀
추가 리소스
- 전제 조건
- 1단계: 미니큐브 설치(로컬 테스트용)
- 2단계: 스토리지클래스 구성
- 3단계: Milvus 오퍼레이터를 사용하여 Milvus 설치하기
- 4단계: Milvus 클러스터에 액세스하기
- 5단계: Python SDK를 사용하여 Milvus에 연결하기
- 결론
- 추가 리소스
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word