Konfigurieren der horizontalen Pod-Autoskalierung (HPA) für Milvus
Überblick
Horizontale Pod-Autoskalierung (HPA) ist eine Kubernetes-Funktion, die die Anzahl der Pods in einem Deployment automatisch auf der Grundlage der Ressourcenauslastung (z. B. CPU oder Speicher) anpasst. In Milvus kann HPA auf zustandslose Komponenten wie proxy, queryNode, dataNode und indexNode angewendet werden, um den Cluster als Reaktion auf Änderungen der Arbeitslast dynamisch zu skalieren.
In dieser Anleitung wird erklärt, wie HPA für Milvus-Komponenten mit dem Milvus Operator konfiguriert wird.
Voraussetzungen
- Ein laufender Milvus-Cluster, der mit Milvus Operator bereitgestellt wurde.
- Zugriff auf
kubectlzur Verwaltung von Kubernetes-Ressourcen. - Vertrautheit mit der Milvus-Architektur und Kubernetes HPA.
Konfigurieren von HPA mit Milvus Operator
Um HPA in einem Milvus-Cluster zu aktivieren, der von Milvus Operator verwaltet wird, führen Sie die folgenden Schritte aus:
Setzen Sie Replicas auf -1:
Setzen Sie in der benutzerdefinierten Milvus-Ressource (CR) das Feld
replicasauf-1für die Komponente, die Sie mit HPA skalieren möchten. Dadurch wird die Skalierungssteuerung an HPA und nicht an den Operator delegiert. Sie können die CR direkt bearbeiten oder den folgenden Befehlkubectl patchverwenden, um schnell zur HPA-Steuerung zu wechseln:kubectl patch milvus <your-release-name> --type='json' -p='[{"op": "replace", "path": "/spec/components/proxy/replicas", "value": -1}]'Ersetzen Sie
<your-release-name>durch den Namen Ihres Milvus-Clusters.Führen Sie den Befehl aus, um zu überprüfen, ob die Änderung übernommen wurde:
kubectl get milvus <your-release-name> -o jsonpath='{.spec.components.proxy.replicas}'Die erwartete Ausgabe sollte
-1sein, was bestätigt, dass die Komponenteproxynun unter HPA-Kontrolle steht.Alternativ können Sie sie auch in der CR YAML definieren:
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: <your-release-name> spec: mode: cluster components: proxy: replicas: -1Definieren Sie eine HPA-Ressource:
Erstellen Sie eine HPA-Ressource, um die Bereitstellung der gewünschten Komponente zu steuern. Nachfolgend finden Sie ein Beispiel für die Komponente
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: 60Ersetzen Sie
my-releaseinmetadata.nameundspec.scaleTargetRef.namedurch Ihren aktuellen Milvus-Clusternamen (z.B.<your-release-name>-milvus-proxy-hpaund<your-release-name>-milvus-proxy).Wenden Sie die HPA-Konfiguration an:
Stellen Sie die HPA-Ressource mit dem folgenden Befehl bereit:
kubectl apply -f hpa.yamlFühren Sie diesen aus, um zu überprüfen, ob die HPA erfolgreich erstellt wurde:
kubectl get hpaSie sollten eine Ausgabe ähnlich der folgenden sehen:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-release-milvus-proxy-hpa Deployment/my-release-milvus-proxy <some>/60% 2 10 2 <time>Die Felder
NAMEundREFERENCEspiegeln Ihren Clusternamen wider (z. B.<your-release-name>-milvus-proxy-hpaundDeployment/<your-release-name>-milvus-proxy).
scaleTargetRef: Gibt die zu skalierende Bereitstellung an (z. B.my-release-milvus-proxy).minReplicasundmaxReplicas: Legt den Skalierungsbereich fest (2 bis 10 Pods in diesem Beispiel).metrics: Konfiguriert die Skalierung auf der Grundlage der CPU- und Speichernutzung, wobei eine durchschnittliche Nutzung von 60 % angestrebt wird.
Schlussfolgerung
HPA ermöglicht Milvus eine effiziente Anpassung an unterschiedliche Arbeitslasten. Mit dem Befehl kubectl patch können Sie eine Komponente schnell auf HPA-Kontrolle umstellen, ohne die gesamte CR manuell bearbeiten zu müssen. Weitere Einzelheiten finden Sie in der Kubernetes HPA-Dokumentation.