Conceitos de rede para contêineres do Windows

Concluído

O processador em um computador Windows padrão tem um modo kernel e um modo de usuário . Os componentes principais do sistema operacional e a maioria dos drivers de dispositivo são executados no modo kernel e os aplicativos são executados no modo de usuário. Quando você implementa contêineres em seu computador, cada contêiner cria um ambiente leve e isolado para executar aplicativos no sistema operacional host. O contêiner compartilha a maior parte do kernel do sistema operacional host para acesso ao sistema de arquivos e ao registro.

Os contêineres do Windows precisam de um sistema operacional de contêiner. O contêiner depende do kernel do sistema operacional para gerenciar serviços como sistema de arquivos, rede, agendamento de processos e gerenciamento de memória. O sistema operacional contêiner é o sistema operacional que faz parte do tempo de execução empacotado. Você pode usar diferentes versões do Windows com seus contêineres para habilitar o acesso a recursos específicos do sistema operacional ou outro software necessário.

Isolamento e segurança da rede

Os contêineres do Windows oferecem suporte a dois tipos de isolamento de tempo de execução: Process e Hyper-V. A principal diferença é a extensão do isolamento criado entre o contêiner, o sistema operacional do host e os outros contêineres no host.

O isolamento do processo é a abordagem mais comum. Várias instâncias de contêiner em execução no mesmo host obtêm isolamento por meio das configurações de namespace e controle de recursos, juntamente com outras funções de isolamento de processo.

  • Cada contêiner compartilha o mesmo kernel com o sistema operacional host e outros contêineres no host.
  • Cada contêiner tem um adaptador de rede virtual que se conecta a um comutador virtual.
  • Cada ponto de extremidade de contêiner é colocado em seu próprio namespace de rede. O namespace de rede padrão é onde se encontram o adaptador de rede virtual do host e a pilha de rede do host.

Hyper-V isolamento fornece segurança aprimorada e compatibilidade mais ampla entre o host e os contêineres. Várias instâncias de contêiner são executadas no mesmo host, mas cada contêiner é executado em uma máquina virtual otimizada. A máquina virtual fornece isolamento no nível de hardware entre cada contêiner e o host do contêiner.

  • Cada contêiner tem essencialmente seu próprio kernel.
  • Para impor o isolamento de rede entre os contêineres no host, um namespace de rede é criado para cada contêiner.
  • Os contentores são executados com o isolamento Hyper-V, onde o adaptador de rede virtual para o contentor está instalado. Os contêineres do Windows Server usam um adaptador de rede virtual de host para se conectar ao comutador virtual. Hyper-V isolamento usa um adaptador de rede de máquina virtual sintética (não exposto à máquina virtual do utilitário) para se conectar ao comutador virtual.

Diagrama mostrando como a máquina virtual fornece isolamento no nível de hardware entre cada contêiner e o host do contêiner.

Gerenciamento de rede com o Serviço de Rede Host (HNS)

O Windows usa o Host Networking Service (HNS) e o Host Compute Service (HCS) para criar contêineres e anexar pontos de extremidade à rede.

  • Rede: HNS cria um comutador virtual Hyper-V para cada rede, e HNS cria os pools de NAT e IP necessários.
  • Pontos de extremidade: HNS cria o namespace de rede para cada ponto de extremidade de contêiner e HNS/HCS adiciona o adaptador de rede virtual ao namespace. HNS cria portas de comutação virtuais. O HNS atribui ao endpoint o endereço IP, as informações do Sistema de Nomes de Domínio (DNS), as rotas, etc., de acordo com o modo de driver de rede configurado.
  • Políticas: Para a rede NAT padrão, o HNS cria as regras de encaminhamento de porta WinNAT e mapeamentos com as regras ALLOW do Firewall do Windows correspondentes. Para todas as outras redes, o HNS usa a Plataforma de Filtragem Virtual (VFP) para criar políticas para balanceamento de carga, ACLs e encapsulamento.

Interação com o firewall

Dependendo da configuração do contêiner e do tipo de driver de rede, as ACLs de porta são impostas por uma combinação do Firewall do Windows e da Plataforma de Filtragem Virtual (VFP) do Azure. Os seguintes valores usam o firewall dos hosts Windows (aperfeiçoado com namespaces de rede) e o VFP.

  • Saída padrão: PERMITIR TUDO.
  • Default Inbound: PERMITIR TODO o tráfego de rede não solicitado (TCP, UDP, ICMP, IGMP). NEGAR TODO o outro tráfego de rede que não seja desses protocolos.

Drivers de rede

O Windows suporta cinco drivers ou modos de rede diferentes para contêineres do Docker: NAT, Transparent, Overlay, L2Bridge e L2Tunnel. Além da rede NAT padrão criada pelo Docker no Windows, você também pode definir redes de contêiner personalizadas usando o comando docker network create da CLI do Docker.

A tabela a seguir resume os tipos de driver de rede disponíveis para contêineres do Docker no Windows. Escolha o driver de rede que satisfaça os requisitos de sua infraestrutura de rede física e configuração de host (nó único ou múltiplo).

Driver de rede Utilizações típicas Contêiner a contêiner (nó único) Contentor para o exterior (nó único + vários nós) Contêiner a contêiner (vários nós)
NAT (padrão) Bom para desenvolvedores Mesma sub-rede: conexão em modo bridge através do switch virtual Hyper-V

Sub-rede cruzada: Não suportado (apenas um prefixo interno NAT)
Roteado através do adaptador de rede virtual de gerenciamento (vinculado ao WinNAT) Não suportado diretamente: requer a exposição de portas através do host
transparente Bom para desenvolvedores ou pequenas implantações Mesma sub-rede: ligação em ponte através do comutador virtual Hyper-V

Sub-rede cruzada: Roteada através do host de contêiner.
Roteado através do host de contêiner com acesso direto ao adaptador de rede (físico) Roteado através do host de contêiner com acesso direto ao adaptador de rede (físico)
Sobreposição Bom para multi-nó; necessário para o Docker Swarm, disponível no Kubernetes Mesma sub-rede: ligação em ponte através do comutador virtual Hyper-V

Sub-rede cruzada: O tráfego de rede é encapsulado e roteado através do adaptador de rede virtual de gerenciamento.
Sem suporte direto - requer um segundo endpoint de container ligado à rede NAT no Windows Server 2016 ou uma regra NAT VFP no Windows Server 2019. Sub-rede Same/Cross: O tráfego de rede é encapsulado usando VXLAN e roteado através do adaptador de rede virtual de gerenciamento
L2Bridge Usado para Kubernetes e Microsoft Software Designed Network (SDN) Mesma sub-rede: conexão em ponte através de Hyper-V comutador virtual

Cross Subnet: Endereço MAC do contêiner reescrito na entrada e saída e roteado.
Endereço MAC do container
reescrito na entrada e saída Mesma sub-rede: ligação em ponte

Cross Subnet: roteado através do adaptador de rede virtual de gerenciamento no WSv1809 e superior
L2Tunnel Apenas Azure Sub-rede Same/Cross: Redirecionado ao switch virtual Hyper-V do host físico onde a política é aplicada. O tráfego deve passar pelo gateway de rede virtual do Azure Mesmo/Cruzamento de Sub-rede: Encaminhado ao switch virtual Hyper-V do host físico onde a política é aplicada

Opções avançadas de rede

Pode tirar partido de várias opções de controladores de rede para capacidades e funcionalidades específicas do Windows. Eis alguns exemplos:

  • Acesse o Switch Embedded Teaming para redes de host de contêiner especificando vários adaptadores de rede para seu contêiner do Windows.
  • Defina o ID de VLAN de uma rede para configurar o isolamento de VLAN para quaisquer pontos de extremidade de contêiner que se conectem à rede.
  • Especifique a política de OutboundNAT para uma rede para permitir o acesso do contêiner ao mundo exterior.

Para obter mais informações, consulte Opções avançadas de rede no Windows.