Todos os produtos
Search
Central de documentação

Alibaba Cloud Service Mesh:Integrar KServe com ASM para implantar serviços de inferência nativos da nuvem

Última atualização: Jun 28, 2026

Ao executar modelos de machine learning no Kubernetes, é necessário contar com dimensionamento automático, roteamento de tráfego e gerenciamento de ciclo de vida para endpoints de inferência. O KServe (anteriormente KFServing) oferece esses recursos como uma plataforma de inferência nativa do Kubernetes. Ao integrar o KServe ao Alibaba Cloud Service Mesh (ASM), você implanta e gerencia serviços de inferência por meio do plano de controle do ASM, com dimensionamento automático baseado em tráfego, scale-to-zero e implantações canary integrados.

Pré-requisitos

Antes de começar, verifique se você tem:

Como funciona

O KServe executa no seu cluster Container Service for Kubernetes (ACK), gerenciado pelo ASM. Quando você implanta um recurso InferenceService, o KServe:

  1. Provisiona um servidor de modelo e carrega o modelo do URI de armazenamento especificado.

  2. Cria serviços Knative para dimensionamento serverless, incluindo scale-to-zero quando ocioso.

  3. Gera recursos de roteamento do Istio (um VirtualService e um Gateway) para tornar o modelo acessível pelo gateway de entrada do ASM.

O KServe suporta dois modos de implantação:

Modo

Comportamento de dimensionamento

Serverless (Knative)

Dimensionamento automático, incluindo scale-to-zero

Implantação Kubernetes

Alocação padrão de recursos do Kubernetes

O procedimento a seguir utiliza o modo serverless com Knative.

KServe

Para mais detalhes, consulte o projeto KServe no GitHub.

Etapa 1: Ativar o KServe no ASM

O KServe depende do cert-manager para gerenciar certificados. Ao ativar o KServe, o cert-manager é instalado automaticamente.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha Ecosystem > KServe on ASM.

  3. Na página KServe on ASM, clique em Enable KServe on ASM.

Se o cert-manager já estiver instalado no cluster, desative a opção Automatically install the CertManager component in the cluster para evitar conflitos.

Etapa 2: Obter o endereço IP do gateway de entrada

Anote o endereço IP do gateway de entrada do ASM. Esse dado é necessário para enviar solicitações de inferência na Etapa 4.

  1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

  2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha ASM Gateways > Ingress Gateway.

  3. Na página Ingress Gateway, anote o Service address do gateway de entrada.

Etapa 3: Criar um serviço de inferência

Implante um modelo de classificação de íris scikit-learn como um InferenceService para verificar a integração.

  1. Conecte-se ao cluster ACK com kubectl e crie um namespace para os recursos do KServe:

    kubectl create namespace kserve-test
  2. Crie um arquivo chamado isvc.yaml com o seguinte conteúdo:

    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        model:
          modelFormat:
            name: sklearn
          storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"
  3. Implante o serviço de inferência no namespace kserve-test:

    kubectl apply -f isvc.yaml -n kserve-test
  4. Verifique se o serviço está pronto:

    kubectl get inferenceservices sklearn-iris -n kserve-test

    Saída esperada:

    NAME           URL                                           READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION            AGE
    sklearn-iris   http://sklearn-iris.kserve-test.example.com   True           100                              sklearn-iris-predictor-00001   3h26m

    A coluna READY exibe True quando o serviço está disponível.

  5. (Opcional) Visualize os recursos do Istio gerados automaticamente

    Após a criação do serviço de inferência, o KServe gera automaticamente um serviço virtual e um gateway do Istio para rotear o tráfego para o modelo. Para visualizar esses recursos:

    1. Faça login no console do ASM. No painel de navegação à esquerda, escolha Service Mesh > Mesh Management.

    2. Na página Mesh Management, clique em nome da instância do ASM. No painel de navegação à esquerda, escolha Traffic Management Center > VirtualService.

    3. Na página VirtualService, clique em ícone Refresh ao lado de Namespace e selecione kserve-test na lista suspensa para visualizar o serviço virtual.

    4. No painel de navegação à esquerda, escolha ASM Gateways > Gateway. Na página Gateway, selecione knative-serving na lista suspensa Namespace para visualizar o gateway do Istio.

Etapa 4: Enviar solicitações de inferência

Com o serviço de inferência em execução, envie solicitações de previsão pelo gateway de entrada do ASM. As etapas a seguir aplicam-se a Linux e macOS.

  1. Crie um arquivo de entrada com dados de amostra para o modelo de classificação de íris:

    cat <<EOF > "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  2. Obtenha o nome do host do serviço:

    SERVICE_HOSTNAME=$(kubectl get inferenceservice sklearn-iris -n kserve-test -o jsonpath='{.status.url}' | cut -d "/" -f 3)
    echo $SERVICE_HOSTNAME

    Saída esperada:

    sklearn-iris.kserve-test.example.com
  3. Envie uma solicitação de previsão pelo gateway de entrada. Substitua <ingress-gateway-ip> pelo endereço IP obtido na Etapa 2:

    curl -H "Host: ${SERVICE_HOSTNAME}" \
      http://<ingress-gateway-ip>:80/v1/models/sklearn-iris:predict \
      -d @./iris-input.json

    Saída esperada:

    {"predictions": [1, 1]}

    O modelo classifica ambas as amostras de entrada como classe 1 (Iris versicolor).

  4. Execute um teste de carga

    Para avaliar o throughput e a latência sob tráfego sustentado, implante um job de teste de carga pré-configurado:

    1. Implante a aplicação de teste de carga:

      kubectl create -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/loadtest.yaml
    2. Encontre o nome do pod de teste de carga:

      kubectl get pod

      Saída esperada:

      NAME                                                       READY   STATUS      RESTARTS   AGE
      load-testxhwtq-pj9fq                                       0/1     Completed   0          3m24s
      sklearn-iris-predictor-00001-deployment-857f9bb56c-vg8tf   2/2     Running     0          51m
    3. Visualize os resultados do teste. Substitua <load-test-pod-name> pelo nome real do pod obtido na etapa anterior:

      kubectl logs <load-test-pod-name>

      Saída esperada:

      Requests      [total, rate, throughput]         30000, 500.02, 500.01
      Duration      [total, attack, wait]             59.999s, 59.998s, 1.352ms
      Latencies     [min, mean, 50, 90, 95, 99, max]  1.196ms, 1.463ms, 1.378ms, 1.588ms, 1.746ms, 2.99ms, 18.873ms
      Bytes In      [total, mean]                     690000, 23.00
      Bytes Out     [total, mean]                     2460000, 82.00
      Success       [ratio]                           100.00%
      Status Codes  [code:count]                      200:30000
      Error Set:

      Esse resultado mostra uma taxa de sucesso de 100% em 30.000 solicitações a 500 solicitações por segundo, com latência média de 1,463 ms.

Próximos passos