Milvusの水平ポッドオートスケーリング(HPA)の設定

概要

Horizontal Pod Autoscaling (HPA)はKubernetesの機能で、CPUやメモリなどのリソースの使用状況に基づいてデプロイメント内のPodの数を自動的に調整します。Milvusでは、proxy,queryNode,dataNode,indexNode のようなステートレスコンポーネントにHPAを適用することで、ワークロードの変化に応じてクラスタを動的にスケールさせることができます。

このガイドでは、Milvus Operatorを使用してMilvusコンポーネントにHPAを設定する方法を説明します。

前提条件

  • Milvus Operatorを使用してデプロイされた稼働中のMilvusクラスタ。
  • Kubernetesリソースを管理するためのkubectl へのアクセス。
  • MilvusアーキテクチャとKubernetes HPAに精通していること。

Milvus Operatorを使用したHPAの設定

Milvus Operatorで管理するMilvusクラスタでHPAを有効にするには、以下の手順に従います:

  1. Replicasを-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 リソースを定義: 目的のコンポーネントのデプロイメントをターゲットとする 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.name およびspec.scaleTargetRef.namemy-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>
    

    NAME およびREFERENCE フィールドには、 クラスタ名が反映されます(例:<your-release-name>-milvus-proxy-hpa およびDeployment/<your-release-name>-milvus-proxy)。

  • scaleTargetRef:スケーリングする配置を指定します(たとえば、my-release-milvus-proxy)。
  • minReplicas および : スケーリング範囲を設定します(この例では 2~10 Pods)。maxReplicas
  • metrics:CPU とメモリの使用率に基づいてスケーリングを設定し、平均使用率 60% を目標にします。

結論

HPAを利用することで、Milvusは様々なワークロードに効率的に適応することができます。kubectl patch コマンドを使用することで、CR全体を手動で編集することなく、コンポーネントを素早くHPA制御に切り替えることができます。詳細については、Kubernetes HPAのドキュメントを参照してください。

Try Managed Milvus for Free

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

Get Started
フィードバック

このページは役に立ちましたか ?