Plugin CNI open source que atribui IPs nativos da VPC aos pods, com suporte a políticas de rede do Kubernetes.
Antes de começar
Compreenda os modos de operação do Terway, planeje a rede e crie um cluster.
Leia Networking overview e Terway vs. Flannel CNI plugins e escolha um plugin de rede.
Planeje os blocos CIDR e crie um cluster. Consulte ACK managed cluster network planning.
Faturamento
O plugin Terway é gratuito, mas seus pods consomem uma pequena quantidade de recursos em cada nó. Para informações sobre o faturamento dos serviços cloud do ACK, consulte Cloud resource costs.
Notas de uso
O arquivo eni-config contém parâmetros críticos do sistema. modifique ou exclua campos não permitidos pode causar interrupções na rede ou falhas na criação de pods. Para parâmetros personalizáveis, consulte Customize Terway parameters.
O Terway usa CRDs para rastrear o status dos recursos. Não modifique esses recursos do sistema, pois alterações não autorizadas podem causar interrupções na rede ou falhas na criação de pods.
|
Nome do recurso |
Tipo de recurso |
Operações de CRD do usuário |
Operações de CR do usuário |
|
podnetworkings.network.alibabacloud.com |
Recursos do usuário |
Não |
Sim |
|
podenis.network.alibabacloud.com |
Recursos do sistema |
Não |
Não |
|
networkinterfaces.network.alibabacloud.com |
Recursos do sistema |
Não |
Não |
|
nodes.network.alibabacloud.com |
Recursos do sistema |
Não |
Não |
|
noderuntimes.network.alibabacloud.com |
Recursos do sistema |
Não |
Não |
|
*.cilium.io |
Recursos do sistema |
Não |
Não |
|
*.crd.projectcalico.org |
Recursos do sistema |
Não |
Não |
Número máximo de pods por nó
O número máximo de pods por nó depende da quantidade de interfaces de rede elásticas (ENIs) compatíveis com o tipo de instância ECS. Cada nó deve atender a um limite mínimo de pods para ingressar no cluster.
Modo do Terway | Limite de pods | Exemplo | Pods com IP estático, vSwitch separado e grupo de segurança separado |
modo de ENI compartilhada | (Número de ENIs suportadas pelo tipo de instância ECS - 1) × Número de endereços IP privados por ENI. (EniQuantity - 1) × EniPrivateIpAddressQuantity Nota Um nó deve ter capacidade para mais de 11 pods para ingressar no cluster. | Por exemplo, ecs.g7.4xlarge é compatível com 8 ENIs com 30 IPs privados cada. Máximo de pods: (8 - 1) × 30 = 210. Importante O número máximo de pods que usam as ENIs do nó é fixado pelo tipo de instância do nó. Modificar o parâmetro | 0 |
modo de ENI compartilhada + Trunk ENI | Máximo de pods Trunk por nó: Total de interfaces de rede do tipo de instância ECS - Número de ENIs suportadas pelo tipo de instância ECS. EniTotalQuantity - EniQuantity | ||
modo de ENI exclusiva | Instância ECS: Número de ENIs suportadas pelo tipo de instância ECS - 1. EniQuantity - 1 Instância Lingjun: LeniQuota - 1 Nota Um nó deve ter capacidade para mais de 6 pods para ingressar no cluster. | Por exemplo, ecs.g7.4xlarge é compatível com 8 ENIs. Máximo de pods: (8 - 1) = 7. | Número de ENIs suportadas pelo tipo de instância ECS - 1. EniQuantity - 1 Nota Instâncias Lingjun não são compatíveis. |
A partir do Terway v1.11.0, é possível selecionar o modo de ENI exclusiva ou compartilhada por pool de nós. Diferentes modos podem coexistir no mesmo cluster. Consulte Terway release notes.
Verificar a quantidade de pods suportada
Método 1: Ao criar um pool de nós, verifique a coluna Terway Compatibility (Supported Pods) na seção Instance Type.
-
Método 2: Obtenha os valores necessários e calcule manualmente o limite de pods para o tipo de instância ECS.
Consulte a documentação da família de instâncias para verificar o número máximo de ENIs por tipo de instância.
Use o OpenAPI Explorer. Defina
InstanceTypescomo o tipo de instância e clique em Initiate Call. Na resposta:EniQuantity= número máximo de ENIs,EniPrivateIpAddressQuantity= IPs privados por ENI,EniTotalQuantity= contagem total de interfaces de rede.
instale o plugin de rede Terway
Ao criar um cluster, selecione o plugin de rede Terway. Não é possível alterar o plugin de rede posteriormente.
Acesse o ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em Create Kubernetes Cluster.
-
É necessário que você configure os parâmetros de rede do Terway. Para outros parâmetros, consulte Create an ACK managed cluster.
Parâmetro
Descrição
IPv6 Dual-stack
Por favor, selecione Enable e crie um cluster dual-stack com suporte a IPv4 e IPv6.
Este recurso está disponível apenas para o Kubernetes 1.22 ou posterior e é compatível apenas com o Terway. Não pode ser usado com o recurso elastic Remote Direct Memory Access (eRDMA)
O cluster é compatível com os protocolos IPv4 e IPv6. No entanto, a comunicação entre os nós de trabalho e o plano de controle ainda utiliza endereços IPv4. Certifique-se de que:
A VPC do cluster seja compatível com o dual-stack IPv6.
Ao usar o Terway no modo de ENI compartilhada, o tipo de instância do nó deve ser compatível com IPv6 e ter o mesmo número de endereços IPv4 e IPv6 suportados.
VPC
A VPC para o cluster.
Network Plug-in
Por favor, selecione Terway.
DataPath V2
Ative a aceleração DataPath V2, que utiliza um caminho de encaminhamento de tráfego diferente do modo padrão de ENI compartilhada para aceleração de rede. Consulte Best practices for Terway with Datapath V2.
NotaEm novos clusters com Kubernetes 1.34 ou posterior que utilizam o DataPath V2, o kube-proxy deixa de ser executado nos nós do Terway.
Este modo inclui suporte integrado a portmap. Consulte Configure a custom CNI chain.
O DataPath V2 é compatível apenas com as seguintes imagens de sistema operacional e requer o kernel Linux 5.10 ou posterior:
Alibaba Cloud Linux 4
Alibaba Cloud Linux 3 (todas as versões)
ContainerOS
Ubuntu
Quando ativado, o contêiner de políticas em cada nó consome cerca de 0,5 núcleos de CPU e 512 MB de memória, e esse consumo aumenta conforme o tamanho do cluster. Limite padrão de CPU: 1 núcleo; sem limite de memória.
No modo DataPath V2, as informações do conntrack são armazenadas em um mapa eBPF com evição LRU. Configure os limites do mapa com base na sua carga de trabalho para evitar a ultrapassagem do limite de conexões. Consulte Optimize conntrack configurations in Terway mode.
NetworkPolicy support
Para ativar, selecione esta opção para ativar o
NetworkPolicynativo do Kubernetes.NotaA partir do Terway v1.9.2, o NetworkPolicy em novos clusters utiliza eBPF com DataPath V2 para o plano de dados.
O recurso que permite gerenciar
NetworkPolicyno console está em preview público. Para usá-lo, envie uma solicitação no Quota Center console.
Support for ENI Trunking
Para ativar o modo Trunk ENI, selecione permitindo um IP estático, vSwitch dedicado e grupo de segurança separado por pod.
NotaÉ possível ativar o Trunk ENI para ACK managed clusters sem enviar uma solicitação. Para ativar o Trunk ENI em um ACK dedicated cluster, envie primeiro uma solicitação no Quota Center console.
Em ACK managed clusters recém-criados com Kubernetes 1.31 ou posterior, o recurso Trunk ENI é ativado automaticamente. Não é necessário selecioná-lo manualmente.
vSwitch
Os vSwitches para os nós do cluster. É recomendável que você selecione vSwitches de pelo menos três zonas de disponibilidade para alta disponibilidade.
Pod vSwitch
O bloco CIDR do vSwitch do pod pode se sobrepor ao bloco CIDR do vSwitch do nó. O Terway atribui endereços IP aos pods a partir do bloco CIDR do vSwitch do pod, o que consome recursos de IP da VPC.
Se os recursos de IP se esgotarem rapidamente, acesse a página VPC console - vSwitches para verificar quais product cloud, como ECS, SLB e NAT Gateway, estão consumindo os endereços IP.
Service CIDR
O bloco CIDR para os Services do Kubernetes. Não deve se sobrepor aos blocos CIDR de nós ou pods.
IPv6 Service CIDR Block
É possível configurar o bloco CIDR do Service IPv6 após ativar o recurso de dual-stack IPv6.
Modos de operação do Terway
O Terway é compatível com os modos de ENI compartilhada e exclusiva, cada um com diferentes compensações entre desempenho e recursos.
Modo de ENI compartilhada e modo de ENI exclusiva
O Terway fornece dois modos para atribuir endereços IP aos pods: modo de ENI compartilhada e modo de ENI exclusiva.
A partir do Terway v1.11.0, o modo de ENI é selecionado por pool de nós, e não mais no nível do cluster.
O sistema operacional do nó usa a ENI primária; o Terway gerencia as demais para a rede dos pods. Não configure essas ENIs manualmente. Se precisar, gerencie ENIs específicas conforme Configure a filter for ENIs.
Item | Modo de ENI compartilhada | Modo de ENI exclusiva | |
Gerenciamento de endereços IP dos pods | Alocação de ENI | Vários pods compartilham uma ENI. | Cada pod recebe uma ENI dedicada em seu nó. |
Densidade de implantação de pods | Alta densidade, com suporte a centenas de pods em um único nó. | Baixa densidade. Um nó típico tem capacidade para apenas alguns pods. | |
Arquitetura de rede | |||
Caminho de dados | O tráfego entre pods e para o backend do Service passa pela pilha de rede do nó. | O acesso ao Service utiliza a pilha de rede do sistema operacional do nó, mas o tráfego entre pods e para o backend do Service contorna a pilha por meio da ENI dedicada, garantindo melhor desempenho. | |
Cenários | Cargas de trabalho Kubernetes de uso geral. | Oferece desempenho de rede comparável ao de VMs, ideal para aplicações de alto throughput ou baixa latência. | |
Aceleração de rede | Compatível com a aceleração de rede do DataPath V2. | Não compatível. A ENI exclusiva já oferece alto desempenho de rede por meio de ENIs dedicadas aos pods. | |
Suporte a NetworkPolicy | Compatível com o | Não compatível com | |
Configuração de rede no nível do nó | Compatível. Consulte Node-level network configuration. | Compatível. Consulte Node-level network configuration. | |
Controle de acesso | Com o Trunk ENI ativado, é possível configure a static IP, separate vSwitch, and security group per pod. | Permite configurar um endereço IP estático, um vSwitch separado e um grupo de segurança separado para cada pod. | |
Aceleração de rede
No modo de ENI compartilhada, é possível ativar a aceleração de rede DataPath V2, que utiliza um caminho de encaminhamento de tráfego diferente para alcançar desempenho superior.
O DataPath V2 é uma versão atualizada do antigo modo de aceleração IPvlan+eBPF. No Terway v1.8.0 e posteriores, o DataPath V2 é o único modo de aceleração disponível ao criar um cluster e instale o plugin Terway.
Os modos de aceleração DataPath V2 e IPvlan+eBPF aplicam-se apenas a pools de nós no modo de ENI compartilhada e não afetam pools de nós no modo de ENI exclusiva.
Recursos do DataPath V2 | Descrição |
Versões aplicáveis do Terway | Clusters criados com o Terway v1.8.0 ou posterior. |
Arquitetura de rede | |
Caminho de dados acelerado |
|
Otimização de desempenho |
|
Uso | Crie um cluster e defina Network Plug-in como Terway e selecione DataPath V2. |
Notas de uso |
|
O modo de aceleração IPvlan+eBPF ainda pode estar em uso em clusters mais antigos.
Controle de acesso
O Terway fornece gerenciamento de tráfego granular por meio de NetworkPolicy e Trunk ENI no modo de ENI compartilhada, e isolamento de ENI por pod no modo de ENI exclusiva.
NetworkPolicy
Pools de nós no modo de ENI exclusiva não têm suporte a
NetworkPolicy.-
Pools de nós no modo de ENI compartilhada têm suporte ao
NetworkPolicynativo do Kubernetes, que permite controlar o tráfego de rede entre pods por meio de regras definidas pelo usuário.Crie um cluster e ative o
NetworkPolicydefinindo Network Plug-in como Terway e selecionando NetworkPolicy support. Consulte Use network policies in ACK clusters.NotaO recurso que permite gerenciar
NetworkPolicyno console está em preview público. Para usá-lo, envie uma solicitação no Quota Center console.
IP estático, vSwitch e grupo de segurança
Pools de nós no modo de ENI exclusiva têm suporte nativo à atribuição de um endereço IP estático, um vSwitch separado e um grupo de segurança separado para cada pod. Isso permite o gerenciamento granular de tráfego, o isolamento de rede, a configuração de políticas e o gerenciamento de endereços IP.
-
Para pools de nós no modo de ENI compartilhada, o recurso opcional Trunk ENI permite configurar um endereço IP estático, um vSwitch separado e um grupo de segurança separado para cada pod.
Para ativar este recurso, crie seu cluster, defina Network Plug-in como Terway e selecione Support for ENI Trunking. Consulte Configure a static IP address, separate vSwitch, and security group for a pod.
NotaÉ possível ativar o Trunk ENI para ACK managed clusters sem enviar uma solicitação. Para ativar o Trunk ENI em um ACK dedicated cluster, envie primeiro uma solicitação no Quota Center console.
Em ACK managed clusters recém-criados com Kubernetes 1.31 ou posterior, o recurso Trunk ENI é ativado automaticamente. Não é necessário selecioná-lo manualmente.
Após ativar o modo Trunk ENI, os componentes terway-eniip e terway-controlplane são instalados.
Limites de dimensionamento
O Terway utiliza APIs REST de product cloud para gerenciar interfaces de rede de nós e endereços IP. Para limites de taxa de API, consulte a documentação de cada product cloud.
modo de ENI compartilhada: É possível alocar até 500 nós simultaneamente.
modo de ENI exclusiva/TrunkENI: É possível alocar até 100 pods simultaneamente.
Essas cotas são fixas.
Configuração do plano de dados
O plano de dados do Terway depende da sequência precisa e da integridade de suas configurações de IP rule, IP route e hooks eBPF no nível do kernel. Alterações não coordenadas por componentes externos — como ajustes de prioridade, substituição de regras ou descarregamento de programas — podem causar interrupções na rede dos pods, ineficácia das políticas de rede e redirecionamento não intencional de tráfego. Valide todos os componentes de terceiros antes da integração para evitar conflitos.
Regras de filtro TC
|
Interface |
Direção |
Programa |
Prioridade |
Função |
|
ethx |
toContainer |
VLAN Untag |
20000 |
Remover tag VLAN |
|
ethx |
toContainer |
cil_from_netdev |
25000 |
Política de svc/rede do Cilium |
|
veth |
toContainer |
cil_to_container |
25000 |
Política de svc/rede do Cilium |
|
veth |
fromContainer |
cil_from_container |
25000 |
Política de svc/rede do Cilium |
|
ethx |
fromContainer |
cil_to_netdev |
25000 |
Política de svc/rede do Cilium |
|
ethx |
fromContainer |
VLAN Tag |
50001 |
Adicionar tag VLAN |
Regras de IP
|
Direção |
Prioridade |
Tabela de roteamento |
|
toContainer |
512 |
1000 + linkIndex (índice da ENI) |
|
fromContainer |
512 |
1000 + linkIndex (índice da ENI) |
Perguntas frequentes
Identificar os modos de ENI do Terway
É possível identificar o modo verificando o nome do DaemonSet do Terway em execução no namespace kube-system.
-
Agora, execute o seguinte comando para listar os DaemonSets do Terway no namespace kube-system:
kubectl get ds -n kube-system | grep terway -
Identifique o modo com base na saída:
Se o DaemonSet for nomeado
terway-eniip, o modo em uso é o de ENI compartilhada.Se o DaemonSet for nomeado
terway-eni, o modo em uso é o de ENI exclusiva.
No Terway v1.11.0 e posteriores, o modo de ENI compartilhada é o padrão. É possível ativar o modo de ENI exclusiva por meio de configuring the exclusive ENI network mode for a node pool. Em versões anteriores, o modo era selecionado na criação do cluster.
Troca de plugin de rede
O plugin é definido na criação do cluster. Para trocá-lo, crie um novo cluster e migre as cargas de trabalho.
Como resolvo o erro "OS Type not supported" ao criar um pool de nós ou nó?
Um erro semelhante ao seguinte pode ocorrer ao criar um pool de nós ou nó:
OS Type AliyunLinux4ContainerOptimized is not supported for addons: terway-eniip: required version >= v1.16.4, current version v1.14.3
Causa: A versão do add-on terway-eniip no cluster é muito antiga e não é compatível com o tipo de sistema operacional atual, como AliyunLinux4ContainerOptimized.
-
Solução:
Acesse o console do Container Service. Acesse a página Component Management do cluster de destino e clique na aba Network.
Encontre o add-on terway-eniip e clique em Upgrade. Atualize o add-on para a versão v1.16.4 ou posterior para garantir compatibilidade com mais tipos de sistema operacional.
Após a conclusão da atualização, tente criar o pool de nós novamente.
Como resolvo o erro InsufficientInstanceIPv6Address ao adicionar um nó?
Causa: O tipo de instância ECS especificado, como ecs.u1-c1m2.xlarge, não oferece uma quantidade suficiente de endereços IPv6 para pods no modo de Elastic Network Interface (ENI) compartilhada do Terway.
-
Solução:
Opção 1: Se seus services exigem IPv6, altere para um tipo de instância ECS compatível com mais ENIs ou endereços IPv6.
-
Opção 2: Se seus services não exigem IPv6, desmarque a opção IPv6 dual-stack ao criar o cluster ou mude para o plugin de rede Flannel.
Desmarcar a opção IPv6 dual-stack ao criar um cluster ACK não afeta o plugin de rede Terway. Desmarque esta opção se seus services não usarem IPv6.