Configurare l'autoscaling orizzontale dei pod (HPA) per Milvus
Panoramica
Horizontal Pod Autoscaling (HPA) è una funzionalità di Kubernetes che regola automaticamente il numero di Pod in una distribuzione in base all'utilizzo delle risorse, come CPU o memoria. In Milvus, HPA può essere applicato a componenti stateless come proxy, queryNode, dataNode e indexNode per scalare dinamicamente il cluster in risposta alle variazioni del carico di lavoro.
Questa guida spiega come configurare HPA per i componenti Milvus utilizzando Milvus Operator.
Prerequisiti
- Un cluster Milvus funzionante distribuito con Milvus Operator.
- Accesso a
kubectlper la gestione delle risorse Kubernetes. - Conoscenza dell'architettura Milvus e di Kubernetes HPA.
Configurazione di HPA con Milvus Operator
Per abilitare HPA in un cluster Milvus gestito da Milvus Operator, seguite questi passaggi:
Impostare le repliche su -1:
Nella risorsa personalizzata (CR) di Milvus, impostare il campo
replicassu-1per il componente che si desidera scalare con HPA. In questo modo si delega il controllo della scala a HPA invece che all'operatore. È possibile modificare direttamente il CR o utilizzare il seguente comandokubectl patchper passare rapidamente al controllo HPA:kubectl patch milvus <your-release-name> --type='json' -p='[{"op": "replace", "path": "/spec/components/proxy/replicas", "value": -1}]'Sostituite
<your-release-name>con il nome del vostro cluster Milvus.Per verificare che la modifica sia stata applicata, eseguire il comando:
kubectl get milvus <your-release-name> -o jsonpath='{.spec.components.proxy.replicas}'L'output atteso dovrebbe essere
-1, a conferma che il componenteproxyè ora sotto il controllo di HPA.In alternativa, è possibile definirlo nel CR YAML:
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: <your-release-name> spec: mode: cluster components: proxy: replicas: -1Definire una risorsa HPA:
Creare una risorsa HPA per indirizzare la distribuzione del componente desiderato. Di seguito è riportato un esempio per il componente
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: 60Sostituire
my-releaseinmetadata.nameespec.scaleTargetRef.namecon il nome effettivo del cluster Milvus (ad esempio,<your-release-name>-milvus-proxy-hpae<your-release-name>-milvus-proxy).Applicare la configurazione HPA:
Distribuire la risorsa HPA usando il seguente comando:
kubectl apply -f hpa.yamlPer verificare che l'HPA sia stato creato correttamente, eseguire:
kubectl get hpaSi dovrebbe vedere un output simile a:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-release-milvus-proxy-hpa Deployment/my-release-milvus-proxy <some>/60% 2 10 2 <time>I campi
NAMEeREFERENCErifletteranno il nome del cluster (ad esempio,<your-release-name>-milvus-proxy-hpaeDeployment/<your-release-name>-milvus-proxy).
scaleTargetRef: Specifica l'installazione da scalare (ad esempio,my-release-milvus-proxy).minReplicasemaxReplicas: Imposta l'intervallo di scalatura (da 2 a 10 Pod in questo esempio).metrics: Configura il ridimensionamento in base all'utilizzo della CPU e della memoria, mirando a un utilizzo medio del 60%.
Conclusione
HPA consente a Milvus di adattarsi in modo efficiente a carichi di lavoro variabili. Utilizzando il comando kubectl patch, è possibile passare rapidamente un componente al controllo HPA senza modificare manualmente l'intero CR. Per maggiori dettagli, consultare la documentazione di Kubernetes HPA.