Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Integrate KServe with ASM to deploy cloud-native inference services

Dernière mise à jour :Aug 11, 2026

Lorsque vous exécutez des modèles d'apprentissage automatique sur Kubernetes, vous avez besoin d'une mise à l'échelle automatisée, d'un routage du trafic et d'une gestion du cycle de vie pour les endpoints d'inférence. KServe (anciennement KFServing) offre ces fonctionnalités en tant que plateforme d'inférence native pour Kubernetes. En intégrant KServe à Alibaba Cloud Service Mesh (ASM), vous déployez et gérez des services d'inférence via le plan de contrôle d'ASM, avec une mise à l'échelle automatique basée sur le trafic, une réduction à zéro (scale-to-zero) et des déploiements canary intégrés.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Fonctionnement

KServe s'exécute sur votre cluster Container Service for Kubernetes (ACK) et est géré par ASM. Lorsque vous déployez une ressource InferenceService, KServe :

  1. Provisionne un serveur de modèle et charge le modèle depuis l'URI de stockage spécifié.

  2. Crée des services Knative pour la mise à l'échelle serverless, y compris la réduction à zéro en cas d'inactivité.

  3. Génère des ressources de routage Istio (un VirtualService et une Gateway) afin que le modèle soit accessible via la passerelle d'entrée ASM.

KServe prend en charge deux modes de déploiement :

Mode Comportement de mise à l'échelle
Serverless (Knative) Mise à l'échelle automatique, y compris la réduction à zéro
Déploiement Kubernetes Allocation standard des ressources Kubernetes

La procédure suivante utilise le mode serverless avec Knative.

KServe

Pour plus de détails, consultez le projet KServe sur GitHub.

Étape 1 : Activer KServe sur ASM

KServe dépend de cert-manager pour la gestion des certificats. Lorsque vous activez KServe, cert-manager est installé automatiquement.

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez Ecosystem > KServe on ASM.

  3. Sur la page KServe on ASM, cliquez sur Enable KServe on ASM.

Si cert-manager est déjà installé dans votre cluster, désactivez l'option Automatically install the CertManager component in the cluster pour éviter les conflits.

Étape 2 : Obtenir l'adresse IP de la passerelle d'entrée

Notez l'adresse IP de la passerelle d'entrée ASM. Vous en aurez besoin pour envoyer des requêtes d'inférence à l'étape 4.

  1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.

  2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez ASM Gateways > Ingress Gateway.

  3. Sur la page Ingress Gateway, notez l'Service address de la passerelle d'entrée.

Étape 3 : Créer un service d'inférence

Déployez un modèle de classification iris scikit-learn en tant qu'InferenceService pour vérifier l'intégration.

  1. Connectez-vous au cluster ACK avec kubectl et créez un namespace pour les ressources KServe :

    kubectl create namespace kserve-test
  2. Créez un fichier nommé isvc.yaml avec le contenu suivant :

    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. Déployez le service d'inférence dans le namespace kserve-test :

    kubectl apply -f isvc.yaml -n kserve-test
  4. Vérifiez que le service est prêt :

    kubectl get inferenceservices sklearn-iris -n kserve-test

    Résultat attendu :

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

    La colonne READY affiche True lorsque le service est disponible.

  5. (Facultatif) Afficher les ressources Istio générées automatiquement

    Après la création du service d'inférence, KServe génère automatiquement un service virtuel et une passerelle Istio pour router le trafic vers le modèle. Pour afficher ces ressources :

    1. Connectez-vous à la console ASM. Dans le volet de navigation de gauche, sélectionnez Service Mesh > Mesh Management.

    2. Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, sélectionnez Traffic Management Center > VirtualService.

    3. Sur la page VirtualService, cliquez sur l'icône Refresh à côté de Namespace et sélectionnez kserve-test dans la liste déroulante pour afficher le service virtuel.

    4. Dans le volet de navigation de gauche, sélectionnez ASM Gateways > Gateway. Sur la page Gateway, sélectionnez knative-serving dans la liste déroulante Namespace pour afficher la passerelle Istio.

Étape 4 : Envoyer des requêtes d'inférence

Une fois le service d'inférence en cours d'exécution, envoyez des requêtes de prédiction via la passerelle d'entrée ASM. Les étapes suivantes s'appliquent à Linux et macOS.

  1. Créez un fichier d'entrée avec des exemples de données pour le modèle de classification iris :

    cat <<EOF > "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  2. Récupérez le nom d'hôte du service :

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

    Résultat attendu :

    sklearn-iris.kserve-test.example.com
  3. Envoyez une requête de prédiction via la passerelle d'entrée. Remplacez <ingress-gateway-ip> par l'adresse IP obtenue à l'étape 2 :

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

    Résultat attendu :

    {"predictions": [1, 1]}

    Le modèle classe les deux échantillons d'entrée dans la classe 1 (Iris versicolor).

  4. Exécuter un test de charge

    Pour évaluer le débit et la latence sous un trafic soutenu, déployez une tâche de test de charge préconfigurée :

    1. Déployez l'application de test de charge :

      kubectl create -f https://alibabacloudservicemesh.oss-cn-beijing.aliyuncs.com/kserve/v0.7/loadtest.yaml
    2. Recherchez le nom du pod de test de charge :

      kubectl get pod

      Résultat attendu :

      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. Affichez les résultats du test. Remplacez <load-test-pod-name> par le nom réel du pod obtenu à l'étape précédente :

      kubectl logs <load-test-pod-name>

      Résultat attendu :

      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:

      Ce résultat montre un taux de réussite de 100 % sur 30 000 requêtes à raison de 500 requêtes par seconde, avec une latence moyenne de 1,463 ms.

Étapes suivantes