Anexação de várias interfaces de rede aos pods - Amazon EKS

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

Anexação de várias interfaces de rede aos pods

Por padrão, o plug-in CNI da Amazon VPC atribui um endereço IP a cada pod. Esse endereço IP é anexado a uma interface de rede elástica que gerencia todo o tráfego de entrada e saída do pod. Para aumentar a largura de banda e a performance de taxa de pacotes por segundo, é possível usar o recurso Multi-NIC da CNI da VPC para configurar um pod com várias interfaces de rede. Um pod com várias interfaces de rede é um único pod do Kubernetes que usa múltiplas interfaces de rede (e múltiplos endereços IP). Ao executar um pod com várias interfaces de rede, é possível distribuir o tráfego da aplicação em várias interfaces de rede usando conexões simultâneas. Isso é especialmente útil em casos de uso de Inteligência Artificial (IA), Machine Learning (ML) e Computação de Alta Performance (HPC).

O diagrama a seguir mostra um pod com várias hospedagens em execução em um nó de processamento com várias placas de interface de rede (NICs) em uso.

Um pod com hospedagem múltipla com duas interfaces de rede conectadas, uma interface de rede com ENA e uma interface de rede com ENA e EFA

Contexto

No Amazon EC2, uma interface de rede elástica é um componente lógico de redes em uma VPC que representa uma placa de rede virtual. Para muitos tipos de instância do EC2, as interfaces de rede compartilham uma única placa de interface de rede (NIC) no hardware. Essa única NIC tem uma largura de banda máxima e uma taxa de pacotes por segundo.

Se o recurso Multi-NIC estiver habilitado, a CNI da VPC não atribuirá endereços IP em massa, o que acontece por padrão. Em vez disso, a CNI da VPC atribuirá um endereço IP a uma interface de rede em cada placa de rede sob demanda quando um novo pod for iniciado. Esse comportamento reduz a taxa de esgotamento de endereço IP, que é aumentada com o uso de pods com várias hospedagens. Como a CNI da VPC está atribuindo endereços IP sob demanda, os pods podem levar mais tempo para serem iniciados em instâncias com o recurso multi-NIC habilitado.

Considerações

  • Certifique-se de que seu cluster de Kubernetes esteja executando a versão 1.20.0 ou posterior da CNI da VPC. O recurso Multi-NIC só está disponível na versão 1.20.0 ou posterior da CNI da VPC.

  • Ative a variável de ambiente ENABLE_MULTI_NIC no plug-in CNI da VPC. É possível executar o comando a seguir para definir a variável e iniciar uma implantação do DaemonSet.

    • kubectl set env daemonset aws-node -n kube-system ENABLE_MULTI_NIC=true

  • Certifique-se de criar nós de processamento que tenham várias placas de interface de rede (NICs). Para obter uma lista de instâncias do EC2 que tenham várias placas de interface de rede, consulte Placas de rede no Guia do usuário do Amazon EC2.

  • Se o recurso Multi-NIC estiver habilitado, a CNI da VPC não atribuirá endereços IP em massa, o que acontece por padrão. Como a CNI da VPC está atribuindo endereços IP sob demanda, os pods podem levar mais tempo para serem iniciados em instâncias com o recurso multi-NIC habilitado. Para mais informações, consulte a seção Contexto anterior.

  • Com o recurso Multi-NIC habilitado, os pods não têm várias interfaces de rede por padrão. Você deverá configurar cada workload para usar várias NICs. Adicione a anotação k8s.amazonaws.com/nicConfig: multi-nic-attachment às workloads que devam ter várias interfaces de rede.

Considerações do IPv6

  • Política do IAM personalizada: para clusters IPv6, crie e use a seguinte política personalizada do IAM para a CNI da VPC. Essa política é específica para multi-NIC. Para obter mais informações gerais sobre o uso da CNI da VPC com clusters IPv6, consulte Saiba mais sobre endereços IPv6 para clusters, pods e serviços.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AmazonEKSCNIPolicyIPv6MultiNIC", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:DescribeInstances", "ec2:AssignIpv6Addresses", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DescribeTags", "ec2:ModifyNetworkInterfaceAttribute", "ec2:DeleteNetworkInterface", "ec2:DescribeInstanceTypes", "ec2:UnassignIpv6Addresses", "ec2:AttachNetworkInterface", "ec2:DescribeSubnets" ], "Resource": "*" }, { "Sid": "AmazonEKSCNIPolicyENITagIPv6MultiNIC", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:network-interface/*" } ] }
  • Mecanismo de transição de IPv6 não disponível: se você usar o recurso de várias NICs, a CNI da VPC não atribuirá um endereço IPv4 aos pods em um cluster IPv6. Caso contrário, a CNI da VPC atribuirá um endereço IPv4 local de host a cada pod para que um pod possa se comunicar com recursos externos IPv4 em outra Amazon VPC ou na Internet.

Uso

Depois que o recurso Multi-NIC for habilitado na CNI da VPC e os pods do aws-node forem reiniciados, será possível configurar cada workload para ser de vários hospedeiros. A seguir há um exemplo de uma configuração de YAML com a anotação necessária:

apiVersion: apps/v1 kind: Deployment metadata: name: orders-deployment namespace: ecommerce labels: app: orders spec: replicas: 3 selector: matchLabels: app: orders template: metadata: annotations: k8s.amazonaws.com/nicConfig: multi-nic-attachment labels: app: orders spec: ...

Perguntas frequentes

1. O que é uma placa de interface de rede (NIC)?

Uma placa de interface de rede (NIC), também chamada simplesmente de placa de rede, é um dispositivo físico que permite a conectividade de rede para o hardware de computação em nuvem subjacente. Nos servidores EC2 modernos, isso se refere à placa de rede Nitro. Uma Interface de Rede Elástica (ENI) é uma representação virtual dessa placa de rede subjacente.

Alguns tipos de instâncias do EC2 têm várias NICs para maior largura de banda e performance de taxa de pacotes. Para tais instâncias, é possível atribuir ENIs secundárias às placas de rede adicionais. Por exemplo, a ENI #1 pode funcionar como a interface para a NIC conectada ao índice 0 da placa de rede, enquanto a ENI #2 pode funcionar como a interface para a NIC conectada a um índice de placa de rede separado.

2. O que é um pod com vários hospedeiros?

Um pod com vários hospedeiros é um único pod do Kubernetes com várias interfaces de rede (e, por implicação, vários endereços IP). Cada interface de rede do pod está associada a uma Interface de Rede Elástica (ENI), e essas ENIs são representações lógicas de NICs separadas no nó de processamento subjacente. Com várias interfaces de rede, um pod com vários hospedeiros tem capacidade adicional de transferência de dados, o que também aumenta sua taxa de transferência de dados.

Importante

A CNI da VPC só pode configurar pods com vários hospedeiros em tipos de instâncias que tenham várias NICs.

3. Por que devo usar esse recurso?

Se você precisar escalar a performance da rede em suas workloads baseadas em Kubernetes, é possível usar o recurso de várias NICs para executar pods com várias interfaces que interajam com todas as NICs subjacentes que tenham um dispositivo ENA conectado a elas. A utilização de placas de rede adicionais aumenta a capacidade de largura de banda e a performance da taxa de pacotes em suas aplicações, distribuindo o tráfego de aplicações em várias conexões simultâneas. Isso é especialmente útil em casos de uso de Inteligência Artificial (IA), Machine Learning (ML) e Computação de Alta Performance (HPC).

4. Como faço para usar esse recurso?

  1. Primeiro, você deve garantir que seu cluster de Kubernetes esteja usando a CNI da VPC versão 1.20 ou posterior. Para obter as etapas para atualizar a CNI da VPC como um complemento do EKS, consulte Atualização do plug-in da CNI da Amazon VPC (complemento do Amazon EKS).

  2. Em seguida, você precisará habilitar o suporte a várias NICs na CNI do VPC usando a variável de ambiente ENABLE_MULTI_NIC.

  3. Em seguida, você deverá se certificar de criar e unir nós que tenham várias placas de rede. Para obter uma lista de tipos de instâncias do EC2 que tenham várias placas de rede, consulte Placas de rede no Guia do usuário do Amazon EC2.

  4. Por fim, você configura cada workload para usar várias interfaces de rede (pods de vários hospedeiros) ou usar uma única interface de rede.

5. Como configuro minhas workloads para usar várias NICs em um nó de processamento com suporte?

Para usar pods com vários hospedeiros, você precisa adicionar a seguinte anotação: k8s.amazonaws.com/nicConfig: multi-nic-attachment. Isso anexará uma ENI de cada NIC na instância subjacente ao pod (mapeamento de um para muitos entre um pod e as NICs).

Se essa anotação estiver ausente, a CNI da VPC presumirá que o seu pod requer apenas uma interface de rede e atribuirá a ele um IP de uma ENI em qualquer NIC disponível.

6. Quais adaptadores de interface de rede são compatíveis com esse recurso?

É possível usar qualquer adaptador de interface de rede se tiver pelo menos um ENA conectado à placa de rede subjacente para tráfego IP. Para obter mais informações sobre ENAs, consulte Adaptador de Rede Elástica (ENA) no Guia do usuário do Amazon EC2.

Configurações de dispositivos de rede com suporte:

  • As interfaces ENA fornecem todos os atributos tradicionais de rede IP e roteamento necessários para oferecer suporte à rede IP para uma VPC. Para obter mais informações, consulte Habilitação de redes aperfeiçoadas com ENA em instâncias do EC2.

  • As interfaces EFA (EFA com ENA) fornecem o dispositivo ENA para redes IP e o dispositivo EFA para comunicação de baixa latência e alto throughput.

Importante

Se uma placa de rede tiver apenas um adaptador somente EFA conectado a ela, a CNI da VPC a ignorará ao provisionar a conectividade de rede para um pod com vários hospedeiros. No entanto, se você combinar um adaptador somente EFA com um adaptador ENA em uma placa de rede, a CNI da VPC também gerenciará as ENIs nesse dispositivo. Para usar interfaces somente EFA com clusters do EKS, consulte Execute o treinamento de machine learning no Amazon EKS com o Elastic Fabric Adapter.

7. Posso ver se um nó no meu cluster tem suporte para ENA?

Sim, é possível usar a AWS CLI ou a API do EC2 para recuperar informações de rede sobre uma instância do EC2 no seu cluster. Isso fornece detalhes sobre se a instância tem ou não suporte para ENA. No exemplo a seguir, substitua <your-instance-id> pelo ID de um nó da instância do EC2.

Exemplo da CLI de AWS:

aws ec2 describe-instances --instance-ids <your-instance-id> --query "Reservations[].Instances[].EnaSupport"

Resultado do exemplo:

[ true ]

8. Posso ver os diferentes endereços IP associados a um pod?

Não, não de forma simples. No entanto, é possível usar o nsenter a partir do nó para executar ferramentas de rede comuns, como ip route show, e ver os endereços IP e as interfaces adicionais.

9. Posso controlar o número de interfaces de rede para meus pods?

Não. Quando sua workload é configurada para usar várias NICs em uma instância com suporte, um único pod tem automaticamente um endereço IP de cada placa de rede na instância. Como alternativa, os pods de único hospedeiros terão uma interface de rede conectada a uma NIC na instância.

Importante

As placas de rede que tenham apenas um dispositivo somente EFA conectado a elas serão ignoradas pela CNI da VPC.

10. Posso configurar meus pods para usar uma NIC específica?

Não, não há suporte para isso. Se um pod tiver a anotação relevante, a CNI da VPC o configurará automaticamente para usar cada NIC com um adaptador ENA no nó de processamento.

11. Esse recurso funciona com os outros recursos de rede da CNI da VPC?

Sim, o recurso de várias NICs na CNI da VPC funciona tanto com redes personalizadas quanto com a descoberta aprimorada de sub-redes. No entanto, os pods com vários hospedeiros não usam sub-redes ou grupos de segurança personalizados. Em vez disso, a CNI da VPC atribui endereços IP e interfaces de rede aos pods com vários hospedeiros com a mesma configuração de sub-rede e grupo de segurança do nó. Para obter mais informações sobre redes personalizadas, consulte Implementar pods em sub-redes alternativas com rede personalizada.

O recurso de várias NICs na CNI da VPC não funciona e não pode ser combinado com grupos de segurança para pods.

12. Posso usar políticas de rede com esse recurso?

Sim, é possível usar as políticas de rede do Kubernetes com várias NICs. As políticas de rede do Kubernetes restringem o tráfego de rede que entra e sai dos seus pods. Para obter mais informações sobre a aplicação de políticas de rede com a CNI da VPC, consulte Limitar o tráfego do pod com políticas de rede do Kubernetes.

13. O suporte a várias NICs está ativado no Modo Automático do EKS?

Não há suporte para várias NICs em clusters do Modo Automático do EKS.