Tous les produits
Search
Centre de documentation

Alibaba Cloud Service Mesh:Deploy mesh proxy in native sidecar mode

Dernière mise à jour :Aug 11, 2026

Alibaba Cloud Service Mesh (ASM) prend en charge les modes sidecar et sans sidecar pour le déploiement des proxys de maillage. En mode sidecar, un conteneur de proxy de maillage partage le pod et l'espace de noms réseau avec le conteneur d'application. Il intercepte de manière transparente le trafic entrant et sortant afin de fournir l'équilibrage de charge, la découverte de services, le contrôle du trafic, la sécurité et l'observabilité.

Le mode sidecar natif exploite la fonctionnalité de conteneur sidecar intégrée à Kubernetes (disponible depuis Kubernetes 1,29) pour lier le cycle de vie du proxy de maillage à celui du conteneur d'application. Cette approche élimine les problèmes de démarrage, d'arrêt et de fin de Job inhérents aux déploiements sidecar traditionnels.

Pourquoi utiliser le mode sidecar natif

Dans un déploiement sidecar traditionnel, Kubernetes traite le proxy de maillage et l'application comme des conteneurs indépendants dotés de cycles de vie distincts. Cette discordance entraîne plusieurs problèmes opérationnels :

  • Condition de concurrence au démarrage -- Si le conteneur d'application démarre avant que le sidecar istio-proxy ne soit prêt, l'application ne peut pas accéder au réseau. La section Démarrage progressif du sidecar atténue ce problème, mais celui-ci persiste lorsque le sidecar démarre lentement.

  • Ordre d'arrêt -- Si le sidecar istio-proxy s'arrête avant le conteneur d'application, l'application perd l'accès au réseau. La section Arrêt progressif du sidecar atténue ce problème, mais peut prolonger le temps de terminaison du pod.

  • Pods zombies issus des Jobs -- Lorsqu'un conteneur d'application dans un Job se termine après l'exécution de la tâche, le proxy sidecar continue de s'exécuter et empêche la terminaison du pod.

  • Absence de réseau pour les conteneurs d'initialisation -- Les conteneurs d'initialisation qui s'exécutent avant le démarrage du proxy sidecar ne peuvent pas accéder au réseau. Une solution de contournement consiste à exclure certains ports de la redirection du trafic sidecar.

Le mode sidecar natif résout ces quatre problèmes. Le proxy de maillage est défini comme un conteneur sidecar natif (un conteneur d'initialisation avec restartPolicy: Always). Kubernetes garantit ainsi les comportements suivants :

  1. Il démarre avant les conteneurs standards et reste en cours d'exécution tout au long du cycle de vie du pod.

  2. Il ne s'arrête qu'après la terminaison de tous les conteneurs standards.

  3. Il se termine automatiquement lorsque le dernier conteneur standard se termine, évitant ainsi les pods zombies.

  4. Il s'exécute avant les autres conteneurs d'initialisation, leur permettant d'accéder au réseau via le proxy de maillage.

Sidecar traditionnel contre sidecar natif

Attribut Sidecar traditionnel Sidecar natif
Version de Kubernetes Communauté : 1,4 à 1,28. Clusters ACK, ACK Serverless ou ACS : 1,30 et antérieures Communauté : 1,29 et ultérieures. Clusters ACK, ACK Serverless ou ACS : 1,30 et ultérieures
Version d'ASM ASM 1,22 et antérieures Lorsque vous ajoutez des clusters ACK, ACK Serverless ou ACS de version 1,30 et antérieures à des instances ASM de version 1,22 et antérieures, les proxys de maillage sont déployés en mode sidecar natif par défaut
Emplacement dans la spécification du pod istio-proxy apparaît dans le champ containers aux côtés du conteneur d'application istio-proxy apparaît dans le champ initContainers avec restartPolicy: Always
Gestion du cycle de vie Indépendante du conteneur principal ; nécessite une configuration manuelle pour l'ordre de démarrage et d'arrêt Synchronisée automatiquement avec le conteneur principal ; aucune configuration supplémentaire n'est nécessaire

Vérifier le mode de déploiement

Pour déterminer le mode sidecar utilisé par un pod, inspectez sa spécification à la recherche de deux indicateurs : l'emplacement du conteneur istio-proxy et la présence de restartPolicy: Always.

kubectl get pod <pod-name> -o yaml

Remplacez <pod-name> par le nom réel du pod.

Mode sidecar natif -- La sortie inclut istio-proxy dans la section initContainers :

apiVersion: v1
kind: Pod
metadata:
  name: sleep-xxxxxxxx-xxxxx
  namespace: default
spec:
  containers:
    ...
    - image: 'registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2'
      imagePullPolicy: IfNotPresent
      name: sleep
    ...
  initContainers:
    ...
    - image: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/proxyv2:v1.22.2.35-ge64ec8af-aliyun
      imagePullPolicy: IfNotPresent
      name: istio-proxy
      ports:
        - containerPort: 15090
          name: http-envoy-prom
          protocol: TCP
      restartPolicy: Always  # Confirms native sidecar mode
    ...

Mode sidecar traditionnel -- Le conteneur istio-proxy apparaît dans le champ containers au lieu de initContainers, et aucun restartPolicy: Always n'est défini.

En mode sidecar natif, les configurations du proxy sidecar liées au cycle de vie (telles que le démarrage et l'arrêt progressifs) ne sont pas nécessaires et n'ont aucun effet. Pour la liste complète des paramètres du proxy sidecar, consultez la section Configurer les proxys sidecar .

Passer au mode sidecar traditionnel

Certains composants MutatingWebhook tiers configurés sur Kubernetes version 8 ou antérieure peuvent modifier la définition du pod d'une manière incompatible avec les conteneurs sidecar natifs. Par exemple, le composant logsidecar-injector de KubeSphere peut supprimer la définition du sidecar natif et provoquer des échecs de création de pod. Si vous rencontrez des problèmes similaires, passez au mode sidecar traditionnel.

Les webhooks mutants peuvent modifier les pods en fonction de diverses conditions. Avant de changer de mode, vérifiez si des webhooks d'admission dans votre cluster interfèrent avec les conteneurs sidecar natifs.

Prérequis

Avant de commencer, assurez-vous d'avoir :

Étapes

  1. Désactivez le mode sidecar natif en appliquant un patch à la ressource asmmeshconfig :

    kubectl patch asmmeshconfig default --type=merge --patch='{"spec":{"enableNativeSidecar":false}}'

    Sortie attendue :

    asmmeshconfig.istio.alibabacloud.com/default patched
  2. Redémarrez les pods concernés pour appliquer la modification. Pour plus de détails, consultez la section Redéployer les charges de travail.

  3. Vérifiez que le pod utilise désormais le mode sidecar traditionnel :

    kubectl get pod <pod-name> -o yaml

    Dans la sortie, confirmez que istio-proxy apparaît dans le champ containers (et non dans initContainers) :

    apiVersion: v1
    kind: Pod
    metadata:
      name: sleep-xxxxxxxx-xxxxx
      namespace: default
    spec:
      containers:
        ...
        - image: registry-cn-hangzhou-vpc.ack.aliyuncs.com/acs/proxyv2:v1.22.2.35-ge64ec8af-aliyun
          name: istio-proxy
          ports:
            - containerPort: 15090
              name: http-envoy-prom
              protocol: TCP
        ...
        - image: 'registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2'
          imagePullPolicy: IfNotPresent
          name: sleep
        ...

    Le conteneur istio-proxy ne figure plus dans initContainers et ne possède pas restartPolicy: Always, confirmant ainsi le passage au mode sidecar traditionnel.