Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Configure a custom CNI chain

Dernière mise à jour :Aug 11, 2026

CNI (Container Network Interface) est la norme des plug-ins réseau Kubernetes. Une chaîne CNI relie plusieurs plug-ins CNI de manière séquentielle : chaque plug-in gère des tâches spécifiques telles que l'attribution d'adresse IP ou le routage, en transmettant les résultats au suivant jusqu'à ce que toutes les tâches soient terminées. Cette rubrique explique comment configurer une chaîne CNI personnalisée dans un cluster ACK Terway.

Prérequis

  • Un cluster managé ACK avec le plug-in réseau Terway est créé.

  • Terway v1.5.6 ou version ultérieure. Le cluster n'utilise pas le mode réseau ENI exclusif.

Avertissement

ACK ne garantit pas la compatibilité entre les plug-ins CNI. La configuration d'une chaîne CNI personnalisée constitue une opération à haut risque. Assurez-vous de bien comprendre le fonctionnement de chaque plug-in avant de poursuivre afin d'éviter toute interruption de service.

Configurer une chaîne CNI personnalisée

Ajoutez les plug-ins CNI au fichier de configuration de Terway.

  1. Modifiez le ConfigMap eni-config :

    kubectl edit cm -nkube-system eni-config

    Paramètre

    Description

    10-terway.conf

    La configuration CNI de Terway. Ne modifiez pas ce paramètre.

    Important

    Ne modifiez pas ce fichier.

    10-terway.conflist

    La configuration de la chaîne CNI personnalisée.

    La première entrée dans plugins doit correspondre à 10-terway.conf.

    Important

    Il s'agit d'un exemple de configuration. Ne l'utilisez pas directement.

    Le bloc de configuration doit être au format JSON.

    Fichier de configuration

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "capabilities": {"bandwidth": true}
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "externalSetMarkChain":"KUBE-MARK-MASQ"
              }
            ]
          }
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }
  2. Exécutez kubectl rollout restart -n kube-system daemonset.apps/terway-eniip pour reconstruire les pods Terway.

    Si la configuration est correcte, vérifiez la configuration du plug-in personnalisé dans etc/cni/net.d/10-terway.conflist sur le nœud.

Cas d'utilisation

Configurer un portmap

Le plug-in portmap mappe les ports des pods aux ports de l'hôte pour permettre l'accès externe.

Remarque

Pour l'accès au réseau public, configurez les règles entrantes du groupe de sécurité afin d'autoriser le trafic sur les ports requis.

Ces règles peuvent entrer en conflit avec les politiques réseau Kubernetes. Effectuez des tests approfondis avant le déploiement en production.

Exemple de configuration

  • Accès via l'adresse IP privée et le port d'un nœud :

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "capabilities": {"bandwidth": true} 
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "externalSetMarkChain":"KUBE-MARK-MASQ"
              }
            ]
          }
    
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }
  • Accès via l'adresse IP publique et le port :

    L'accès au réseau public nécessite la configuration suivante.

    Paramètre

    Non-Datapath V2

    Datapath V2

    masqAll

    Non requis

    Requis

    symmetric_routing

    Requis

    Requis

    • masqAll : Paramètre du plug-in portmap. Nécessite la version 1.7.1 ou ultérieure de portmap.

    • symmetric_routing : Paramètre du plug-in Terway. Nécessite la version 1.15.0 ou ultérieure de Terway.

    • Les clusters Datapath V2 avec remplacement de kube-proxy ne nécessitent pas le plug-in portmap.

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: eni-config
      namespace: kube-system
    data:
      10-terway.conflist: |
          {
            "name": "terway-chain",
            "plugins": [
              {
                "cniVersion": "0.4.0",
                "name": "terway",
                "type": "terway",
                "symmetric_routing": true,
                "capabilities": {"bandwidth": true} 
              },
              {
                "type": "portmap",
                "capabilities": {"portMappings": true},
                "masqAll": false
              }
            ]
          }
    
      10-terway.conf: |
        {
          "cniVersion": "0.4.0",
          "name": "terway",
          "type": "terway",
          "capabilities": {"bandwidth": true}
        }

Désactiver les adresses link-local IPv6 pour les conteneurs

Même sans la fonctionnalité double pile IPv6, les conteneurs reçoivent automatiquement une adresse link-local IPv6 dans le sous-réseau fe80::/64 . Ce comportement par défaut du noyau est généralement inoffensif.

Si une application gère incorrectement les adresses réseau, elle peut utiliser les adresses link-local IPv6 pour la communication inter-réseaux. Les adresses link-local ne fonctionnent qu'au sein du même lien, ce qui entraîne des échecs. Signalez d'abord ces problèmes au fournisseur de l'application.

Pour désactiver les adresses link-local IPv6 dans les conteneurs, configurez le plug-in tuning .

Exemple de configuration

kind: ConfigMap
apiVersion: v1
metadata:
  name: eni-config
  namespace: kube-system
data:
  10-terway.conflist: |
      {
        "plugins": [
          {
            "cniVersion": "0.4.0",
            "name": "terway",
            "type": "terway",
            "capabilities": {"bandwidth": true}
          },
          {
            "type": "tuning",
            "sysctl": {
              "net.ipv6.conf.all.disable_ipv6": "1",
              "net.ipv6.conf.default.disable_ipv6": "1",
              "net.ipv6.conf.lo.disable_ipv6": "1"
            }
          }
        ]
      }
  10-terway.conf: |
    {
      "cniVersion": "0.4.0",
      "name": "terway",
      "type": "terway",
      "capabilities": {"bandwidth": true}
    }