Conceitos de rede para contêineres

Concluído

Contêineres são unidades isoladas de software que são executadas em um kernel de SO (sistema operacional) compartilhado. Um contêiner empacota um aplicativo com as respectivas dependências e o abstrai do sistema operacional host onde ele é executado. O resultado é um ambiente de runtime leve em que os aplicativos podem ser executados e facilmente compartilhados durante o desenvolvimento.

Um contêiner é isolado do sistema operacional host e de outros contêineres. Os adaptadores de rede virtual conectados a comutadores virtuais permitem que os contêineres se comuniquem entre eles e com redes externas.

Runtime de contêiner: Docker

Neste módulo, examinamos as opções de rede para contêineres do Docker no Windows. O Docker é uma coleção de ferramentas open-source, soluções e serviços baseados em nuvem que fornecem um modelo comum para o empacotamento de código do aplicativo (também conhecido como conteinerização) em uma unidade padronizada chamada de contêiner do Docker. Os contêineres do Docker fornecem recursos de segurança para executar vários contêineres simultaneamente no mesmo host sem afetar os outros.

Isolamento de contêiner com comutadores virtuais

Diferentes tipos de comutadores virtuais fornecem diferentes níveis de isolamento e desempenho para contêineres. Um comutador virtual interno não está diretamente conectado a uma NIC física no host do contêiner, apenas um comutador virtual externo está conectado diretamente.

Três dos tipos de comutador virtual mais comuns incluem NAT, Transparente e Sobreposição.

  • Um contêiner com um comutador virtual NAT usa a NAT (conversão de endereços de rede) para acessar redes externas. O comutador virtual NAT é fácil de configurar, mas limita a portabilidade e a escalabilidade do contêiner.
  • Um comutador virtual transparente permite que seu contêiner se conecte diretamente à rede física. Esse comutador virtual oferece alto desempenho e flexibilidade, mas você precisa configurar manualmente os endereços IP e as regras de roteamento.
  • O comutador virtual de sobreposição cria uma camada de rede virtual sobre a rede física. Você obtém comunicação entre hosts e segmentação de rede para seu contêiner, mas há um aumento na sobrecarga e na complexidade.

Gerenciamento de contêiner

Normalmente, os contêineres são considerados VMs, mas você precisa ter em mente que eles não são. Um contêiner tem um ciclo de vida distinto. Ele é implantado, iniciado, interrompido e destruído conforme solicitado. Esse ciclo de vida torna os contêineres descartáveis e impacta o modo como os desenvolvedores e as operações de TI planejam o gerenciamento de grandes implantações de contêineres.

Plug-ins do CNI (adaptador de rede de contêiner)

Para gerenciar a alocação e a configuração de endereços IP e adaptadores de rede virtual para seus contêineres, você precisa usar um plug-in de CNI (adaptador de rede de contêiner). Um plug-in CNI é um componente de software que implementa a especificação CNI que define uma maneira padrão para orquestradores como o Kubernetes interagirem com provedores de rede como o Azure.

Existem diferentes plug-ins CNI disponíveis para contêineres do Windows, como:

  • Os plug-ins CNI do WinNAT usam comutadores virtuais NAT para rede de contêiner. O WinNAT é o plug-in CNI padrão para Docker no Windows.
  • Os plug-ins WinCNI usam comutadores virtuais transparentes para rede de contêiner. O WinCNI é compatível com Kubernetes, mas requer gerenciamento manual de endereço IP.
  • Os plug-ins CNI do Azure usam comutadores virtuais de sobreposição para rede de contêiner. O CNI do Azure integra-se à Rede Virtual do Azure e fornece recursos avançados, como políticas de rede, descoberta de serviço e balanceamento de carga.

Contêineres e microsserviços

Um aplicativo de microsserviços é uma abordagem de arquitetura nativa da nuvem em que um aplicativo consiste em muitos componentes ou serviços fracamente acoplados e implantáveis independentemente. Cada componente ou serviço pode ser representado por um contêiner.

Os contêineres não implementam necessariamente uma arquitetura de microsserviços. Eles podem hospedar um aplicativo monolítico, mas não são projetados para essa finalidade. Por padrão, o runtime do contêiner (como o Docker) e o orquestrador de contêiner supõem que um contêiner sempre pode ser excluído ou removido com segurança e outro contêiner pode tomar o lugar dele conforme necessário.

Contêineres, Kubernetes e rede

O processo de implantação, atualização, monitoramento e remoção de contêineres apresenta muitos desafios. Neste módulo, examinamos as soluções de gerenciamento de contêiner para rede para contêineres do Windows com o Kubernetes e o AKS (Serviço de Kubernetes do Azure). Essas opções dão suporte ao uso de plug-ins CNI para rede de contêineres.