Atribua uma ENI exclusiva a cada pod para obter alto throughput, latência ultrabaixa e suporte a multicast.
Limitações
Instâncias ECS exigem Terway v1.11.0 ou posterior; instâncias Lingjun exigem v1.14.3 ou posterior. Consulte Terway para atualizar.
Com o dual-stack ativado, a adição de nós segue as mesmas restrições de tipo de instância do modo de ENI compartilhada: o número de endereços IPv4 (primários e secundários) deve ser igual ao número de endereços IPv6. Consulte família de instâncias para verifique as quantidades suportadas.
Instâncias Lingjun não oferecem suporte a dual-stack.
Pods com ENI exclusiva atribuída não suportam aceleração de rede eBPF nem Kubernetes NetworkPolicy.
O modo de ENI exclusiva requer novos nós. Nós existentes adicionados ao pool não utilizam suas ENIs anexadas.
Esse modo aplica-se apenas a novos nós. Não é possível alternar entre os modos de ENI compartilhada e exclusiva após a criação do node pool.
Não é possível configure uma cadeia CNI personalizada.
Configure a rede de contêineres no nível do node pool
O Terway oferece a ENI exclusiva como modo de rede no nível do node pool. Consulte Modo de ENI compartilhada e modo de ENI exclusiva.
1. Planejar o node pool de ENI exclusiva
No modo de ENI exclusiva, cada nó suporta menos pods e requer mais de seis ENIs. Consulte família de instâncias para ver a quantidade de ENIs por tipo de instância.
Planeje os vSwitches e grupos de segurança para seus pods.
O Terway suporta os seguintes métodos de configuração, em ordem decrescente de prioridade:
Configure um endereço IP fixo, um vSwitch independente e um grupo de segurança para um pod
-
Configuração padrão do cluster: Personalizar parâmetros de configuração do Terway
ImportanteInclua vSwitches para a zona de cada nó. Caso contrário, a criação do pod falhará.
Node pools Lingjun não suportam a configuração de um endereço IP fixo, um vSwitch independente e um grupo de segurança para um pod.
2. Crie um node pool de ENI exclusiva e verifique a configuração
-
Siga as instruções em Crie e gerencie node pools para crie um node pool e adicione o rótulo
k8s.aliyun.com/exclusive-mode-eni-type: eniOnlyaos nós.Adicione também um taint para impedir que pods sem necessidade de ENI exclusiva sejam agendados neste pool.
ImportanteAdicione o rótulo durante a criação do node pool. Nós existentes não podem alternar para o modo de ENI exclusiva. Se o rótulo estiver incorreto, exclua e recrie o node pool.
-
Consulte os recursos alocáveis em um nó para confirme se o modo de ENI exclusiva está ativado:
kubectl describe node <node-name>Saída esperada:
Capacity: aliyun/eni: 7 cpu: 16 ephemeral-storage: 123460788Ki hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 31555380Ki pods: 213 Allocatable: aliyun/eni: 7 cpu: 15890m ephemeral-storage: 113781462033 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 28587828Ki pods: 213O campo
aliyun/eniconfirma que o modo de ENI exclusiva está habilitado.
3. Agendar pods no node pool de ENI exclusiva
Use NodeAffinity ou um recurso personalizado PodNetworking para agendar pods no node pool de ENI exclusiva.
NodeAffinity: Não suporta configurações no nível do pod, como IP fixo, vSwitch independente ou grupo de segurança.
-
PodNetworking: Oferece suporte a configurações de vSwitch, grupo de segurança e IP fixo no nível do pod. Consulte Configure um endereço IP fixo, um vSwitch independente e um grupo de segurança para um pod.
Defina
eniTypecomoENIno campoeniOptionspara agendar pods no node pool de ENI exclusiva. Exemplo:apiVersion: network.alibabacloud.com/v1beta1 kind: PodNetworking metadata: name: enionly spec: eniOptions: eniType: ENI allocationType: type: Elastic selector: podSelector: matchLabels: network: enionly
Perguntas frequentes
Verifique a ENI exclusiva de um pod
O Terway cria automaticamente um recurso PodENI com o mesmo nome e namespace do pod para registrar sua configuração de rede.
Consulte o recurso:
kubectl get podeni nginx-9d557694f-rcdzs -oyaml
Saída esperada:
apiVersion: network.alibabacloud.com/v1beta1
kind: PodENI
metadata:
annotations:
k8s.aliyun.com/pod-uid: 05590939-fc51-47ab-a204-3dd187233bca
creationTimestamp: "2024-09-13T08:09:27Z"
finalizers:
- pod-eni
generation: 1
labels:
k8s.aliyun.com/node: cn-hangzhou.172.XX.XX.25
name: example-9d557694f-rcdzs
namespace: default
resourceVersion: "1131123"
spec:
allocations:
- allocationType:
type: Elastic
eni:
attachmentOptions: {}
id: eni-xxxx
mac: 00:16:3e:37:xx:xx
securityGroupIDs:
- sg-xxxx
vSwitchID: vsw-xxxx
zone: cn-hangzhou-j
ipv4: 172.16.0.30
ipv4CIDR: 172.16.0.0/24
ipv6: 2408:4005:xxxx:xxxx:xxxx:xxxx:xxxx:9ad4
ipv6CIDR: 2408:4005:39c:xxxx::/64
zone: cn-hangzhou-j
status:
eniInfos:
eni-xxxx:
id: eni-xxxx
status: Bind
type: Secondary
instanceID: i-xxxx
phase: Bind