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

  1. Defina Réplicas como -1:

    No recurso personalizado (CR) do Milvus, defina o campo replicas como -1 para 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 comando kubectl patch para 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 componente proxy está 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: -1
    
  2. Definir 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: 60
    

    Substitua my-release em metadata.name e spec.scaleTargetRef.name pelo nome real do seu cluster Milvus (por exemplo, <your-release-name>-milvus-proxy-hpa e <your-release-name>-milvus-proxy).

  3. Aplicar a configuração do HPA:

    Implante o recurso HPA usando o seguinte comando:

    kubectl apply -f hpa.yaml
    

    Para verificar se o HPA foi criado com êxito, execute:

    kubectl get hpa
    

    Deverá 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 NAME e REFERENCE reflectirão o nome do seu cluster (por exemplo, <your-release-name>-milvus-proxy-hpa e Deployment/<your-release-name>-milvus-proxy).

  • scaleTargetRef: Especifica a implantação a ser dimensionada (por exemplo, my-release-milvus-proxy).
  • minReplicas e maxReplicas: 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.

Try Managed Milvus for Free

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

Get Started
Feedback

Esta página foi útil?