Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure a custom CNI chain

Última atualização: Nov 04, 2026

A CNI (Container Network Interface) é o padrão de plug-in de rede do Kubernetes. Uma cadeia CNI conecta vários plug-ins CNI em sequência: cada plug-in lida com tarefas específicas, como alocação de IP ou roteamento, e transmite a saída para o próximo plug-in até concluir todas as tarefas. Este tópico explica como configurar uma cadeia CNI personalizada em um cluster ACK Terway.

Pré-requisitos

  • Um cluster gerenciado do ACK criado com o plug-in de rede Terway.

  • Terway v1.5.6 ou posterior. O cluster não usa o modo de rede ENI exclusivo.

Aviso

O ACK não garante a compatibilidade entre plug-ins CNI. Configurar uma cadeia CNI personalizada é uma operação de alto risco. Entenda a função de cada plug-in antes de prosseguir para evitar interrupções nos negócios.

Configure uma cadeia CNI personalizada

Adicione os plug-ins CNI ao arquivo de configuração do Terway.

  1. Edite o ConfigMap eni-config:

    kubectl edit cm -nkube-system eni-config

    Parâmetro

    Descrição

    10-terway.conf

    A configuração CNI do Terway. Não a modifique.

    Importante

    Não modifique este arquivo.

    10-terway.conflist

    A configuração da cadeia CNI personalizada.

    A primeira entrada em plugins deve corresponder a 10-terway.conf.

    Importante

    Esta é uma configuração de exemplo. Não a use diretamente.

    O bloco de configuração deve estar em formato JSON.

    Arquivo de configuração

    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. Execute kubectl rollout restart -n kube-system daemonset.apps/terway-eniip para recriar os pods do Terway.

    Após configurar corretamente, verifique a configuração do plug-in personalizado em etc/cni/net.d/10-terway.conflist no nó.

Casos de uso

Configure um portmap

O plug-in portmap mapeia as portas dos pods às portas do host para permitir o acesso externo.

Nota

Para acesso à rede pública, configure as regras de entrada do grupo de segurança para permitir o tráfego nas portas necessárias.

Essas regras podem entrar em conflito com as políticas de rede do Kubernetes. Teste-as exaustivamente antes de implantá-las em produção.

Exemplo de configuração

  • Acesse usando o endereço IP privado e a porta de um 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}
        }
  • Acesse usando o endereço IP público e a porta:

    O acesso à rede pública exige a seguinte configuração.

    Parâmetro

    Non-Datapath V2

    Datapath V2

    masqAll

    Não obrigatório

    Obrigatório

    symmetric_routing

    Obrigatório

    Obrigatório

    • masqAll: parâmetro do plug-in portmap. Requer o portmap v1.7.1 ou posterior.

    • symmetric_routing: parâmetro do plug-in Terway. Requer o Terway v1.15.0 ou posterior.

    • Clusters Datapath V2 com substituição de kube-proxy não exigem o 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}
        }

Desative endereços link-local IPv6 para contêineres

Mesmo sem o recurso de pilha dupla IPv6, os contêineres recebem automaticamente um endereço link-local IPv6 na sub-rede fe80::/64. Esse comportamento padrão do kernel geralmente é inofensivo.

Se um aplicativo lidar incorretamente com endereços de rede, ele poderá usar endereços link-local IPv6 para comunicação entre redes. Como os endereços link-local funcionam apenas no mesmo link, ocorrerão falhas. Reporte esse tipo de problema ao fornecedor do aplicativo antes de tomar qualquer ação.

Para desativar endereços link-local IPv6 nos contêineres, configure o plug-in tuning.

Exemplo de configuração

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