Configurar o escalonamento automático de pod horizontal (HPA) para Milvus
Visão geral
O escalonamento automático de pod horizontal (HPA) é um recurso do Kubernetes que ajusta automaticamente o número de pods em uma implantação com base na utilização de recursos, como CPU ou memória. No Milvus, o HPA pode ser aplicado a componentes sem estado como proxy, queryNode, dataNode e indexNode para escalar dinamicamente o cluster em resposta a alterações na carga de trabalho.
Este guia explica como configurar o HPA para componentes do Milvus usando o Milvus Operator.
Pré-requisitos
- Um cluster Milvus em execução implantado com o Milvus Operator.
- Acesso a
kubectlpara gerenciar recursos do Kubernetes. - Familiaridade com a arquitetura do Milvus e o HPA do Kubernetes.
Configurar o HPA com o Milvus Operator
Para habilitar o HPA em um cluster Milvus gerenciado pelo Milvus Operator, siga estas etapas:
Defina Réplicas como -1:
No recurso personalizado (CR) do Milvus, defina o campo
replicascomo-1para o componente que deseja escalar com HPA. Isto delega o controlo de escala para a HPA em vez do operador. Pode editar o CR diretamente ou utilizar o seguinte comandokubectl patchpara mudar rapidamente para o controlo HPA:kubectl patch milvus <your-release-name> --type='json' -p='[{"op": "replace", "path": "/spec/components/proxy/replicas", "value": -1}]'Substitua
<your-release-name>pelo nome do seu cluster Milvus.Para verificar se a alteração foi aplicada, execute:
kubectl get milvus <your-release-name> -o jsonpath='{.spec.components.proxy.replicas}'O resultado esperado deve ser
-1, confirmando que o componenteproxyestá agora sob controlo HPA.Em alternativa, pode defini-lo no YAML do CR:
apiVersion: milvus.io/v1beta1 kind: Milvus metadata: name: <your-release-name> spec: mode: cluster components: proxy: replicas: -1Definir um recurso HPA:
Crie um recurso HPA para direcionar a implantação do componente desejado. Abaixo está um exemplo para o 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: 60Substitua
my-releaseemmetadata.nameespec.scaleTargetRef.namepelo nome real do seu cluster Milvus (por exemplo,<your-release-name>-milvus-proxy-hpae<your-release-name>-milvus-proxy).Aplicar a configuração do HPA:
Implante o recurso HPA usando o seguinte comando:
kubectl apply -f hpa.yamlPara verificar se o HPA foi criado com êxito, execute:
kubectl get hpaDeverá ver uma saída semelhante a:
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE my-release-milvus-proxy-hpa Deployment/my-release-milvus-proxy <some>/60% 2 10 2 <time>Os campos
NAMEeREFERENCEreflectirão o nome do seu cluster (por exemplo,<your-release-name>-milvus-proxy-hpaeDeployment/<your-release-name>-milvus-proxy).
scaleTargetRef: Especifica a implantação a ser dimensionada (por exemplo,my-release-milvus-proxy).minReplicasemaxReplicas: Define o intervalo de escalonamento (2 a 10 Pods neste exemplo).metrics: Configura o dimensionamento com base na utilização de CPU e memória, visando 60% de uso médio.
Conclusão
O HPA permite que o Milvus se adapte eficientemente a cargas de trabalho variáveis. Ao usar o comando kubectl patch, você pode mudar rapidamente um componente para o controle HPA sem editar manualmente o CR completo. Para obter mais detalhes, consulte a documentação do Kubernetes HPA.