Milvus 고급 구성을 수정하는 방법
질리즈 테스트 개발 엔지니어인 유펜 종은 화중과학기술대학교에서 컴퓨터 기술 석사 학위를 취득했습니다. 현재 인터페이스 통합 테스트, SDK 테스트, 벤치마크 테스트 등 Milvus 벡터 데이터베이스의 품질 보증에 종사하고 있습니다. 유펜은 Milvus의 테스트 및 개발 분야에서 열정적인 문제 해결사이며 카오스 엔지니어링 이론과 결함 훈련 실습의 열렬한 팬입니다.
배경
Milvus 벡터 데이터베이스를 사용하는 동안 다양한 시나리오의 요구 사항을 충족하기 위해 기본 구성을 수정해야 합니다. 이전에 Milvus 사용자가 Docker Compose를 사용하여 배포된 Milvus의 구성을 수정하는 방법에 대해 공유한 적이 있습니다. 이번 글에서는 Kubernetes에 배포된 Milvus의 구성을 수정하는 방법에 대해 공유하고자 합니다.
쿠버네티스에서 Milvus 설정 수정하기
수정하고자 하는 구성 파라미터에 따라 다른 수정 방법을 선택할 수 있습니다. 모든 Milvus 설정 파일은 milvus/configs 아래에 저장됩니다. 쿠버네티스에 밀버스를 설치하는 동안, 밀버스 헬름 차트 리포지토리가 로컬에 추가됩니다. helm show values milvus/milvus
를 실행하면 Chart로 직접 수정할 수 있는 파라미터를 확인할 수 있습니다. 차트로 수정 가능한 파라미터의 경우, --values
또는 --set
을 사용하여 파라미터를 전달할 수 있다. 자세한 내용은 밀버스 헬름 차트 및 헬름을 참조하세요.
수정하려는 매개변수가 목록에 없는 경우 아래 지침을 따를 수 있습니다.
다음 단계에서는 데모 목적으로 /milvus/configs/advanced/root_coord.yaml의 rootcoord.dmlChannelNum
파라미터를 수정할 것입니다. 쿠버네티스에서 Milvus의 구성 파일 관리는 컨피그맵 리소스 오브젝트를 통해 구현됩니다. 파라미터를 변경하려면 먼저 해당 차트 릴리즈의 컨피그맵 오브젝트를 업데이트한 다음 해당 파드의 배포 리소스 파일을 수정해야 합니다.
이 방법은 배포된 Milvus 애플리케이션의 파라미터 수정에만 적용된다는 점에 유의하세요. 배포 전에 /milvus/configs/advanced/*.yaml의 파라미터를 수정하려면, 밀버스 헬름 차트를 다시 개발해야 한다.
컨피그맵 YAML 수정
아래와 같이, 쿠버네티스에서 실행 중인 밀버스 릴리스는 릴리스와 동일한 이름을 가진 컨피그맵 오브젝트에 해당한다. 컨피그맵 오브젝트의 data
섹션에는 milvus.yaml의 구성만 포함되어 있다. root_coord.yaml의 rootcoord.dmlChannelNum
을 변경하려면, root_coord.yaml의 파라미터를 컨피그맵 YAML의 data
섹션에 추가하고 특정 파라미터를 변경해야 한다.
kind: ConfigMap
apiVersion: v1
metadata:
name: milvus-chaos
...
data:
milvus.yaml: >
......
root_coord.yaml: |
rootcoord:
dmlChannelNum: 128
maxPartitionNum: 4096
minSegmentSizeToEnableIndex: 1024
timeout: 3600 # time out, 5 seconds
timeTickInterval: 200 # ms
배포 YAML 수정
컨피그맵에 저장된 데이터는 configMap 유형의 볼륨에서 참조된 다음 파드에서 실행되는 컨테이너화된 애플리케이션에서 사용할 수 있다. 파드를 새 구성 파일로 안내하려면, root_coord.yaml에서 구성을 로드해야 하는 파드 템플릿을 수정해야 한다. 구체적으로, 배포 YAML의 spec.template.spec.containers.volumeMounts
섹션 아래에 마운트 선언을 추가해야 한다.
rootcoord 파드의 배포 YAML을 예로 들어보면, .spec.volumes
섹션에 milvus-config라는 configMap
타입의 볼륨이 지정되어 있습니다. 그리고 spec.template.spec.containers.volumeMounts
섹션에서, 이 볼륨은 /milvus/configs/milvus.yaml에 Milvus 릴리즈의 milvus.y aml을 마운트하도록 선언되어 있습니다. 마찬가지로 루트코드 컨테이너에 대한 마운트 선언만 추가하면 /milvus/configs/advanced/root_coord .yaml에 root _coord . yaml을 마운트할 수 있으므로 컨테이너가 새 구성 파일에 액세스할 수 있습니다.
spec:
replicas: 1
selector:
......
template:
metadata:
...
spec:
volumes:
- name: milvus-config
configMap:
name: milvus-chaos
defaultMode: 420
containers:
- name: rootcoord
image: 'milvusdb/milvus-dev:master-20210906-86afde4'
args:
...
ports:
...
resources: {}
volumeMounts:
- name: milvus-config
readOnly: true
mountPath: /milvus/configs/milvus.yaml
subPath: milvus.yaml
- name: milvus-config
readOnly: true
mountPath: /milvus/configs/advanced/`root_coord.yaml
subPath: root_coord.yaml
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
schedulerName: default-scheduler
결과 확인
kubelet은 주기적으로 동기화할 때마다 마운트된 컨피그맵이 최신인지 확인합니다. 볼륨에서 소비되는 컨피그맵이 업데이트되면, 투영된 키도 자동으로 업데이트됩니다. 새 파드가 다시 실행되면 파드에서 수정이 성공했는지 확인할 수 있다. rootcoord.dmlChannelNum
파라미터를 확인하는 명령어는 아래에 나와 있습니다.
$ kctl exec -ti milvus-chaos-rootcoord-6f56794f5b-xp2zs -- sh
# cd configs/advanced
# pwd
/milvus/configs/advanced
# ls
channel.yaml common.yaml data_coord.yaml data_node.yaml etcd.yaml proxy.yaml query_node.yaml root_coord.yaml
# cat root_coord.yaml
rootcoord:
dmlChannelNum: 128
maxPartitionNum: 4096
minSegmentSizeToEnableIndex: 1024
timeout: 3600 # time out, 5 seconds
timeTickInterval: 200 # ms
# exit
위는 쿠버네티스에 배포된 Milvus에서 고급 구성을 수정하는 방법입니다. 향후 Milvus 릴리즈에서는 모든 설정을 하나의 파일에 통합하고 헬름 차트를 통해 설정을 업데이트할 수 있도록 지원할 예정입니다. 하지만 그 전까지는 이 글이 임시 해결책으로 도움이 되길 바랍니다.
오픈 소스 커뮤니티에 참여하세요:
- 배경
- 쿠버네티스에서 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