為 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,請遵循以下步驟:
將 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定義 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.name中的my-release改為您實際的 Milvus 群集名稱(例如,<your-release-name>-milvus-proxy-hpa和<your-release-name>-milvus-proxy)。套用 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 個 Pod)。maxReplicasmetrics:設定基於 CPU 和記憶體使用率的擴充,目標是 60% 的平均使用率。
總結
HPA 允許 Milvus 有效地適應不同的工作負載。透過使用kubectl patch 指令,您可以快速將元件切換為 HPA 控制,而不需手動編輯完整的 CR。如需詳細資訊,請參閱Kubernetes HPA 文件。