Conceitos de rede para contêineres
Os contêineres são unidades isoladas de software que são executadas em um kernel de sistema operacional (SO) compartilhado. Um contêiner empacota um aplicativo com suas dependências e o abstrai do sistema operacional host onde ele é executado. O resultado é um ambiente de tempo de execução leve onde 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 si e com redes externas.
Tempo de execução do 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, soluções e serviços baseados em nuvem de código aberto que fornecem um modelo comum para empacotar ou colocar em contêineres o código do aplicativo em uma unidade padronizada chamada contêiner do Docker. Os contentores do Docker proporcionam funcionalidades de segurança para executar vários contentores simultaneamente no mesmo sistema anfitrião sem que uns afetem 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 conversão de endereços de rede (NAT) para acessar redes externas. O comutador virtual NAT é fácil de configurar, mas limita a portabilidade e a escalabilidade do seu contêiner.
- Um comutador virtual transparente permite que seu contêiner se conecte diretamente à rede física. Este 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ê ganha comunicação entre hosts e segmentação de rede para seu contêiner, mas há um aumento na sobrecarga e complexidade.
Gestão de contentores
Normalmente, os contêineres são pensados como VMs, mas você precisa ter em mente que eles não são. Um contentor tem um ciclo de vida diferente. É implementando, iniciado, parado e destruído a pedido. Esse ciclo de vida torna os contêineres descartáveis e afeta a forma como os desenvolvedores e as operações de TI planejam o gerenciamento de implantações de contêineres grandes.
Plugins de interface de rede de contêiner (CNI)
Para gerenciar a alocação e configuração de endereços IP e adaptadores de rede virtual para seus contêineres, você precisa usar um plug-in CNI (interface 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 plugins CNI disponíveis para contêineres do Windows, tais como:
- WinNAT CNI plugins usam switches virtuais NAT para rede de contêiner. WinNAT é o plugin CNI padrão para Docker no Windows.
- Os plug-ins WinCNI usam comutadores virtuais transparentes para rede de contêineres. WinCNI é compatível com Kubernetes, mas requer gerenciamento manual de endereços IP.
- Os plug-ins CNI do Azure usam comutadores virtuais de sobreposição para rede de contêiner. O Azure CNI integra-se com a Rede Virtual do Azure e fornece recursos avançados, como políticas de rede, descoberta de serviços e balanceamento de carga.
Contentores e microsserviços
Um aplicativo de microsserviços é uma abordagem de arquitetura nativa da nuvem em que um único aplicativo consiste em muitos componentes ou serviços implantáveis de forma flexível e implantáveis de forma independente. 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 foram projetados para essa finalidade. Por padrão, o tempo de execução do contêiner (como o Docker) e o orquestrador de contêiner assumem que um contêiner sempre pode ser excluído ou removido com segurança e outro contêiner pode tomar seu lugar conforme necessário.
Contêineres, Kubernetes e rede
O processo de implementação, atualização, monitorização e remoção de contentores apresenta vários desafios. Neste módulo, examinamos soluções de gerenciamento de contêineres para redes de contêineres do Windows com Kubernetes e Serviço Kubernetes do Azure (AKS). Essas opções suportam o uso de plugins CNI para redes de contêineres.