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 kubectl zur 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:

  1. Setzen Sie Replicas auf -1:

    Setzen Sie in der benutzerdefinierten Milvus-Ressource (CR) das Feld replicas auf -1 fü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 Befehl kubectl patch verwenden, 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 -1 sein, was bestätigt, dass die Komponente proxy nun 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: -1
    
  2. Definieren 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: 60
    

    Ersetzen Sie my-release in metadata.name und spec.scaleTargetRef.name durch Ihren aktuellen Milvus-Clusternamen (z.B. <your-release-name>-milvus-proxy-hpa und <your-release-name>-milvus-proxy).

  3. Wenden Sie die HPA-Konfiguration an:

    Stellen Sie die HPA-Ressource mit dem folgenden Befehl bereit:

    kubectl apply -f hpa.yaml
    

    Führen Sie diesen aus, um zu überprüfen, ob die HPA erfolgreich erstellt wurde:

    kubectl get hpa
    

    Sie 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 NAME und REFERENCE spiegeln Ihren Clusternamen wider (z. B. <your-release-name>-milvus-proxy-hpa und Deployment/<your-release-name>-milvus-proxy).

  • scaleTargetRef: Gibt die zu skalierende Bereitstellung an (z. B. my-release-milvus-proxy).
  • minReplicas und maxReplicas: 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.

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?