Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Configure una cadena CNI personalizada

Última actualización: Sep 04, 2026

CNI (Container Network Interface) es el estándar de plugin de red para Kubernetes. Una cadena CNI vincula varios plugins CNI en secuencia: cada plugin se encarga de tareas específicas, como la asignación de IP o el enrutamiento, y pasa su salida al siguiente hasta completar todas las tareas. Este tema explica cómo configurar una cadena CNI personalizada en un clúster ACK con Terway.

Requisitos previos

  • Se creó un ACK managed cluster con el plugin de red Terway.

  • Terway v1.5.6 o posterior. El clúster no utiliza el modo de red ENI exclusiva.

Aviso

ACK no garantiza la compatibilidad entre plugins CNI. Configurar una cadena CNI personalizada es una operación de alto riesgo. Asegúrese de comprender cada plugin antes de continuar para evitar interrupciones en el servicio.

Configure una cadena CNI personalizada

Agregue los plugins CNI al archivo de configuración de Terway.

  1. Edite el ConfigMap eni-config:

    kubectl edit cm -nkube-system eni-config

    Parámetro

    Descripción

    10-terway.conf

    La configuración CNI de Terway. No la modifique.

    Importante

    No modifique este archivo.

    10-terway.conflist

    La configuración de la cadena CNI personalizada.

    La primera entrada en plugins debe coincidir con 10-terway.conf.

    Importante

    Esta es una configuración de ejemplo. No la utilice directamente.

    El bloque de configuración debe estar en formato JSON.

    Archivo de configuración

    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. Ejecute kubectl rollout restart -n kube-system daemonset.apps/terway-eniip para reconstruir los pods de Terway.

    Si la configuración es correcta, compruebe la configuración del plugin personalizado en etc/cni/net.d/10-terway.conflist en el nodo.

Casos de uso

Configure portmap

El plugin portmap asigna puertos de pods a puertos del host para permitir el acceso externo.

Nota

Para acceder desde la red pública, configure reglas de entrada en el security group que permitan el tráfico en los puertos necesarios.

Estas reglas pueden entrar en conflicto con las políticas de red de Kubernetes. Realice pruebas exhaustivas antes de desplegar en producción.

Ejemplo de configuración

  • Acceso mediante la dirección IP privada y el puerto de un nodo:

    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}
        }
  • Acceso mediante la dirección IP pública y el puerto:

    El acceso desde la red pública requiere la siguiente configuración.

    Parámetro

    Non-Datapath V2

    Datapath V2

    masqAll

    No obligatorio

    Obligatorio

    symmetric_routing

    Obligatorio

    Obligatorio

    • masqAll: parámetro del plugin portmap. Requiere portmap v1.7.1 o posterior.

    • symmetric_routing: parámetro del plugin Terway. Requiere Terway v1.15.0 o posterior.

    • Los clústeres Datapath V2 con reemplazo de kube-proxy no requieren el plugin 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}
        }

Deshabilite direcciones link-local IPv6 para contenedores

Incluso sin la función de pila dual IPv6, los contenedores reciben automáticamente una dirección link-local IPv6 en la subred fe80::/64. Este comportamiento predeterminado del kernel suele ser inofensivo.

Si una aplicación gestiona incorrectamente las direcciones de red, podría usar direcciones link-local IPv6 para la comunicación entre redes. Dado que las direcciones link-local solo funcionan dentro del mismo enlace, esto provoca fallos. Reporte primero estos problemas al proveedor de la aplicación.

Para deshabilitar las direcciones link-local IPv6 en los contenedores, configure el plugin tuning.

Ejemplo de configuración

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}
    }