O modelo de redes do Kubernetes

Atualmente, inúmeros aplicativos da web utilizam vários contêineres e diferentes serviços locais. Uma das principais funcionalidades do Kubernetes é justamente agilizar o processo de implementação de aplicativos que contam com essa configuração.

Com o Kubernetes o usuário pode configurar a orquestração de contêineres exatamente como deseja, combinando assim diferentes contêineres em um único aplicativo. Através dele, é possível implementar e manter contêineres fazendo com que todos os componentes trabalhem em perfeita sincronia. Essas são apenas algumas das vantagens do Kubernetes, mas não a única! Para saber mais sobre o que esse sistema de orquestração de contêineres open-source é capaz, não deixe de conferir!

Vantagens do Kubernetes

O poder de orquestração do Kubernetes vai muito além do que criar e gerenciar serviços de aplicativos abrangendo diversos contêineres. Ele também permite a integração com serviços de segurança, rede, armazenamento, monitoramento, entre outros.

Escalone aplicativos baseados em contêineres
É importante que os aplicativos da web consigam aumentar ou diminuir de tamanho de acordo com o número de usuários. Atender à demanda para equilibrar a carga recebida e garantir o uso adequado dos recursos é essencial para qualquer aplicativo que é implantado em grande escala. O Kubernetes é capaz de automatizar esses processos.

Com o Kubernetes, o dimensionamento acontece em dois níveis
fundamentais
. Os recursos de dimensionamento de contêiner e infraestrutura, como o Escalonador Horizontal e Vertical (HPA e VPA), bem como o Autoescalador de Cluster (CA), automatizam o dimensionamento de componentes integrais sob demanda.

Rode novas versões, sem que seja preciso fechar as antigas

Uma das maiores vantagens da abordagem baseada em contêineres para o desenvolvimento de aplicativos é que ela permite entrega e integração contínua. O Kubernetes permite atualizações simples, as quais podem ser implementadas sem a necessidade de qualquer tempo de inatividade.

Funciona em qualquer ambiente

O Kubernetes não irá bloquear nenhum ambiente de nuvem específico ou tecnologia subjacente. Qualquer plataforma que suporte contêineres pode executar o Kubernetes, tornando-se uma ferramenta muito versátil. O Kubernetes é a melhor plataforma de orquestração de contêineres para o Cloud. Ele oferece excelente suporte para a nuvem e permite que as equipes o utilizem como uma verdadeira plataforma de desenvolvimento nativa, com um potencial aparentemente infinito para a construção sobre ele.

Condições do modelo de rede de Kubernetes

Para implementar o modelo de redes de Kubernetes é essencial atender certas condições e requisitos para que haja a comunicação dos pods:

  1. Todos os pods são capazes de se comunicar uns com os outros sem a necessidade de usar a conversão de endereços (NAT)

  2. Nós são máquinas que executam o cluster do Kubernetes.
    Eles podem ser tanto máquinas físicas quanto virtuais, ou ainda, qualquer coisa que seja capaz de executar os Kubernetes. Esses nós também são capazes de se comunicar com todos os pods, sem que haja a necessidade da NAT.

  3. Cada Pod se verá com o mesmo IP dos demais Pods.
    Isso é, em poucas palavras, o que chamados de modelo de rede de Kubernetes. Dentro desse modelo, no entanto, existem três desafios que devem ser resolvidos para que exista um melhor aproveitamento do Kubernetes. São eles:

(i) Rede de contêiner em contêiner
(ii) Rede Pod-to-Pod
(ii) Rede de pod-a-serviço.

Rede de contêiner em contêiner

Em geral, quando pensamos em uma rede de comunicação virtual, imaginamos essa rede usando apenas um dispositivo Ethernet que interage diretamente com os demais componentes. Porém, na realidade, não é bem assim que tudo acontece.

No sistema Linux, por exemplo, todo o processo em execução se intercomunica dentro de um namespace de rede. Esse namespace fornece uma nova pilha de rede para todos os processos contidos no namespace. O comportamento padrão do Linux é atribuir cada processo ao namespace da rede raiz e, ao fazer isso, fornece acesso ao mundo externo.

Um Pod é modelado como um grupo de contêineres Docker individuais, todos compartilhando um namespace de rede. Todos os contêineres de um determinado Serviço terão o mesmo endereço IP e espaço de porta, atribuídos pelo namespace de rede atribuído ao Pod. Como todos os contêineres residem no mesmo namespace, eles podem se comunicar entre si via host local.

Rede Pod-to-Pod
Cada Pod no Kubernetes tem um endereço IP e esse endereço é aquele que os outros Pods conseguirão ver. Para entender como os Pods se comunicam entre si por meio de endereços IP reais, vamos considerar primeiro dois Pods que residem na mesma máquina física e, portanto, compartilham um nó.

No que diz respeito a cada Pod, é importante ressaltar que cada um tem seu próprio namespace Ethernet. Esse namespace precisa se comunicar com outros namespaces de rede localizados no mesmo nó. O Linux fornece um mecanismo para conectar namespaces usando um dispositivo Ethernet virtual (VED ou 'veth pair'). O VED é composto por um par de interfaces virtuais. Para conectar dois namespaces do Pod, um lado do VED é atribuído ao namespace da rede raiz. O outro membro do ED é então atribuído ao namespace de rede do Pod.

O VED age como um cabo virtual que conecta o namespace da rede raiz ao do namespace da rede do Pod e permite que eles troquem dados.

Rede Pod-to-Service
Os endereços IP do pod no Kubernetes não são duráveis. Sempre que um aplicativo é ampliado ou reduzido, ou encontra um erro e precisa ser reinicializado, seu endereço IP desaparecerá e precisará ser atribuído novamente. Essa alteração no endereço IP ocorre sem aviso e, em resposta a isso, o Kubernetes utiliza o Services.

No Kubernetes, um Service gerencia o estado atual de um conjunto de Pods. Isso fornece ao usuário um meio de rastrear endereços IP e outras propriedades que mudam com o tempo. Os Services servem como uma camada de abstração sobre os Pods, atribuindo um único endereço IP virtual a um grupo específico de pods. Depois que esses pods estiverem associados a esse endereço IP virtual, qualquer tráfego endereçado a esse IP virtual será roteado para o conjunto correspondente de pods. O conjunto de pods vinculados a um Service pode ser alterado a qualquer momento, mas o endereço IP do serviço permanecerá estático.

O Kubernetes facilita o gerenciamento de aplicativos com vários contêineres. Seu uso de Pods leva o já poderoso conceito de contêineres e lhes dá um impulso adicional. Apesar da necessidade de aprendizado, o uso do Kubernetes é mais objetivo do que muitas pessoas imaginam. Compreendendo como funcionam os recursos de rede do Kubernetes, você está pronto para levar o desenvolvimento de seu aplicativo para o próximo nível.

Fonte: DZ Cloud zone

Gostou dessas dicas? Confira também sobre função Lambda. Clique aqui e saiba mais!