為 Milvus 設定水平 Pod 自動擴充 (HPA)

概述

Horizontal Pod Autoscaling (HPA) 是 Kubernetes 的一項功能,可根據 CPU 或記憶體等資源使用率,自動調整部署中 Pod 的數量。在 Milvus 中,HPA 可應用於無狀態元件,例如proxy,queryNode,dataNode, 和indexNode ,以根據工作負載的變化動態擴充群集。

本指南說明如何使用 Milvus Operator 為 Milvus 元件配置 HPA。

先決條件

  • 使用 Milvus Operator 部署的正在運行的 Milvus 群集。
  • 存取kubectl 以管理 Kubernetes 資源。
  • 熟悉 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 資源以針對所需元件的部署。以下是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)。
  • minReplicas 和 : 設定縮放範圍 (本範例中為 2 到 10 個 Pod)。maxReplicas
  • metrics:設定基於 CPU 和記憶體使用率的擴充,目標是 60% 的平均使用率。

總結

HPA 允許 Milvus 有效地適應不同的工作負載。透過使用kubectl patch 指令,您可以快速將元件切換為 HPA 控制,而不需手動編輯完整的 CR。如需詳細資訊,請參閱Kubernetes HPA 文件

免費嘗試托管的 Milvus

Zilliz Cloud 無縫接入,由 Milvus 提供動力,速度提升 10 倍。

開始使用
反饋

這個頁面有幫助嗎?