Milvus용 수평 파드 자동 확장(HPA) 구성하기
개요
수평 파드 오토스케일링(HPA)은 CPU 또는 메모리와 같은 리소스 사용률에 따라 배포의 파드 수를 자동으로 조정하는 쿠버네티스 기능이다. Milvus에서는 proxy, queryNode, dataNode, indexNode 과 같은 스테이트리스 컴포넌트에 HPA를 적용하여 워크로드 변경에 따라 클러스터를 동적으로 확장할 수 있습니다.
이 가이드에서는 Milvus 오퍼레이터를 사용하여 Milvus 구성 요소에 대한 HPA를 구성하는 방법을 설명합니다.
전제 조건
- Milvus Operator와 함께 배포된 실행 중인 Milvus 클러스터.
- Kubernetes 리소스 관리를 위해
kubectl에 액세스. - Milvus 아키텍처 및 Kubernetes HPA에 익숙해야 합니다.
Milvus Operator로 HPA 구성하기
Milvus Operator가 관리하는 Milvus 클러스터에서 HPA를 활성화하려면 다음 단계를 따르세요:
레플리카를 -1로 설정한다:
Milvus CR(사용자 지정 리소스)에서 HPA로 확장하려는 구성 요소에 대해
replicas필드를-1으로 설정합니다. 이렇게 하면 스케일링 제어가 운영자 대신 HPA에 위임됩니다. CR을 직접 편집하거나 다음kubectl patch명령을 사용하여 HPA 제어로 빠르게 전환할 수 있습니다:kubectl patch milvus <your-release-name> --type='json' -p='[{"op": "replace", "path": "/spec/components/proxy/replicas", "value": -1}]'<your-release-name>을 Milvus 클러스터의 이름으로 바꿉니다.변경 사항이 적용되었는지 확인하려면 실행합니다:
kubectl get milvus <your-release-name> -o jsonpath='{.spec.components.proxy.replicas}'예상 출력은
-1으로proxy구성 요소가 이제 HPA 제어를 받는다는 것을 확인합니다.또는 CR YAML에서 정의할 수도 있습니다:
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: <your-release-name> spec: mode: cluster components: proxy: replicas: -1HPA 리소스 정의에서 정의할 수 있습니다:
원하는 구성 요소의 배포를 대상으로 하는 HPA 리소스를 만듭니다. 아래는
proxy구성 요소의 예입니다:apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: my-release-milvus-proxy-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-release-milvus-proxy minReplicas: 2 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 60 - type: Resource resource: name: memory target: type: Utilization averageUtilization: 60 behavior: scaleUp: policies: - type: Pods value: 1 periodSeconds: 30 scaleDown: stabilizationWindowSeconds: 300 policies: - type: Pods value: 1 periodSeconds: 60metadata.name및spec.scaleTargetRef.name에서my-release를 실제 Milvus 클러스터 이름(예:<your-release-name>-milvus-proxy-hpa및<your-release-name>-milvus-proxy)으로 바꿉니다.HPA 구성을 적용합니다:
다음 명령을 사용하여 HPA 리소스를 배포합니다:
kubectl apply -f hpa.yamlHPA가 성공적으로 생성되었는지 확인하려면 실행합니다:
kubectl get hpa다음과 유사한 출력이 표시되어야 합니다:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-release-milvus-proxy-hpa Deployment/my-release-milvus-proxy <some>/60% 2 10 2 <time>NAME및REFERENCE필드는 클러스터 이름(예:<your-release-name>-milvus-proxy-hpa및Deployment/<your-release-name>-milvus-proxy)을 반영합니다.
scaleTargetRef: 확장할 배포를 지정합니다(예:my-release-milvus-proxy).minReplicas및maxReplicas: 스케일링 범위를 설정한다(이 예에서는 2~10개의 파드).metrics: 평균 사용량의 60%를 목표로 CPU 및 메모리 사용량을 기반으로 스케일링을 구성한다.
결론
HPA를 통해 Milvus는 다양한 워크로드에 효율적으로 적응할 수 있습니다. kubectl patch 명령을 사용하면 전체 CR을 수동으로 편집하지 않고도 컴포넌트를 HPA 제어로 빠르게 전환할 수 있습니다. 자세한 내용은 쿠버네티스 HPA 설명서를 참조하세요.