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. 레플리카를 -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: -1
    
  2. HPA 리소스 정의에서 정의할 수 있습니다:

    원하는 구성 요소의 배포를 대상으로 하는 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: 60
    

    metadata.namespec.scaleTargetRef.name 에서 my-release 를 실제 Milvus 클러스터 이름(예: <your-release-name>-milvus-proxy-hpa<your-release-name>-milvus-proxy)으로 바꿉니다.

  3. HPA 구성을 적용합니다:

    다음 명령을 사용하여 HPA 리소스를 배포합니다:

    kubectl apply -f hpa.yaml
    

    HPA가 성공적으로 생성되었는지 확인하려면 실행합니다:

    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>
    

    NAMEREFERENCE 필드는 클러스터 이름(예: <your-release-name>-milvus-proxy-hpaDeployment/<your-release-name>-milvus-proxy)을 반영합니다.

  • scaleTargetRef: 확장할 배포를 지정합니다(예: my-release-milvus-proxy).
  • minReplicasmaxReplicas: 스케일링 범위를 설정한다(이 예에서는 2~10개의 파드).
  • metrics: 평균 사용량의 60%를 목표로 CPU 및 메모리 사용량을 기반으로 스케일링을 구성한다.

결론

HPA를 통해 Milvus는 다양한 워크로드에 효율적으로 적응할 수 있습니다. kubectl patch 명령을 사용하면 전체 CR을 수동으로 편집하지 않고도 컴포넌트를 HPA 제어로 빠르게 전환할 수 있습니다. 자세한 내용은 쿠버네티스 HPA 설명서를 참조하세요.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
피드백

이 페이지가 도움이 되었나요?