跳到主要内容

为 Milvus 配置水平 Pod 自动缩放器(HPA)

概述

水平 Pod 自动缩放器(HPA)是一个 Kubernetes 功能,它根据资源利用率(如 CPU 或内存)自动调整部署中 Pod 的数量。在 Milvus 中,HPA 可以应用于无状态组件,如 proxyqueryNodedataNodeindexNode,以动态扩展集群以响应工作负载变化。

本指南解释了如何使用 Milvus Operator 为 Milvus 组件配置 HPA。

先决条件

  • 使用 Milvus Operator 部署的正在运行的 Milvus 集群。
  • 可以访问 kubectl 来管理 Kubernetes 资源。
  • 熟悉 Milvus 架构和 Kubernetes HPA。

使用 Milvus Operator 配置 HPA

要在由 Milvus Operator 管理的 Milvus 集群中启用 HPA,请按照以下步骤操作:

  1. 将副本数设置为 -1

    在 Milvus 自定义资源(CR)中,将要使用 HPA 扩展的组件的 replicas 字段设置为 -1。这将扩展控制权委托给 HPA 而不是 operator。您可以直接编辑 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 个 Pod)。
  • metrics:配置基于 CPU 和内存利用率的扩展,目标是 60% 的平均使用率。

结论

HPA 允许 Milvus 有效地适应不同的工作负载。通过使用 kubectl patch 命令,您可以快速将组件切换到 HPA 控制,而无需手动编辑完整的 CR。有关更多详细信息,请参阅 Kubernetes HPA 文档