O que é a rede Kubernetes?

Um homem fazendo trilha sozinho nos Alpes Allgäu

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

O que é rede Kubernetes?

A rede Kubernetes fornece a infraestrutura de rede para permitir comunicação, escalabilidade, segurança e acesso externo para aplicações conteinerizadas.

A rede é complexa e envolve a comunicação entre todos os principais componente que existem dentro, como pod, nó, contêiner e serviços; e o exterior, como o tráfego externo de um cluster do Kubernetes.

Esses componentes dependem de quatro métodos de rede distintos para se comunicar:

1. Rede de contêiner para contêiner.

2. Rede de pod para pod.

3. Rede de pod para serviço.

4. Rede externa para serviço.

Vista aérea de rodovias

Fique por dentro da nuvem 


Receba o boletim informativo semanal do Think para ver orientações especializadas sobre a otimização das configurações multinuvem na era da IA.

O que é o Kubernetes?

O nome Kubernetes é originário do grego e significa timoneiro ou piloto. Com base no Borg, a plataforma interna de orquestração de contêineres do Google, o Kubernetes foi introduzido ao público como uma ferramenta de código aberto em 2014.

Nesse mesmo ano, o Google doou o Kubernetes para a Cloud Native Computing Foundation, o hub de computação nativo da nuvem e independente de fornecedores de código aberto. Desde então, a Kubernetes tornou-se a ferramenta de orquestração de contêineres mais usada para executar cargas de trabalho baseadas em contêineres em todo o mundo.

O Kubernetes (também conhecido como "k8s" ou "kube") foi projetado explicitamente para automatizar o gerenciamento de contêineres — a unidade padrão de software que cria pacotes de código e todas as suas dependências. A ferramenta de orquestração é altamente valiosa para a execução rápida e confiável em qualquer ambiente de infraestrutura, no local, na nuvem privada, na nuvem pública ou na nuvem híbrida.

Diferentemente das máquinas virtuais (VMs) que virtualizam o hardware físico, os contêineres virtualizam o sistema operacional, como Linux ou Windows. Cada contêiner contém apenas as bibliotecas e dependências da aplicação. Como os contêineres compartilham o mesmo kernel do sistema operacional que o host, eles são considerados leves, rápidos e portáteis.

O Kubernetes e seu ecossistema de serviços, suporte e ferramentas se tornaram a base para a moderna infraestrutura de nuvem e a modernização de aplicações. Todos os principais provedores de nuvem, incluindo Amazon Web Services (AWS), Google, Microsoft, IBM® e Red Hat, integram o Kubernetes em suas plataformas de nuvem para aprimorar os recursos de plataforma como serviço (PaaS) e infraestrutura como serviço (IaaS).

NS1 Connect

IBM® NS1 connect

Fortaleça a resiliência de sua rede com o IBM NS1 Connect. Neste vídeo, discutimos o valor do IBM NS1 Connect para resiliência e desempenho de aplicações.

Arquitetura Kubernetes

Os seguintes componentes fundamentais formam a arquitetura do Kubernetes:

Cluster

Um cluster do Kubernetes é um conjunto de máquinas físicas ou virtuais (nós) que trabalham juntas para executar aplicativos em contêiner. Os clusters formam a base da arquitetura Kubernetes.

Nós principais

Nós mestres representam um único host de computação, seja uma máquina virtual ou física. Eles hospedam os componentes do plano de controle do Kubernetes e são responsáveis pelo agendamento e dimensionamento de aplicações.

Ao gerenciar todos os recursos de computação, rede e armazenamento em um cluster Kubernetes, o nó principal ajuda a garantir que as aplicações e serviços conteinerizados sejam igualmente implementados nos nós de trabalho no cluster.

Nós do trabalhador

Os nós do trabalhador são responsáveis por executar os contêineres e executar qualquer trabalho atribuído pelo nó principal. Eles também hospedam contêineres de aplicativos, que são agrupados como pods.

Pods

Pods são grupos de um ou mais contêineres, como Linux ou Docker, que compartilham os mesmos recursos de computação e rede. São unidades de implementação de cluster que também funcionam como unidades de escalabilidade.

Por exemplo, se um contêiner em um pod tiver volume de tráfego pesado, o Kubernetes poderá replicar esse pod para outros nós no cluster. O Kubernetes também pode encerrar pods se o volume de tráfego diminuir.

Outros componentes do Kubernetes incluem:

Implementação: a implementação no Kubernetes gerencia um conjunto de pods para executar uma carga de trabalho de aplicação. Uma implementação identifica quantas réplicas de um pod devem ser executadas no cluster. Se um pod falhar, a implementação cria um novo.

Essa funcionalidade crítica ajuda a escalar o número de pods de réplica, rodar atualizações de código e manter a disponibilidade. As implementações são realizadas usando o kubectl, a ferramenta de linha de comando específica do Kubernetes.

Serviço: um Kubernetes service é uma camada de abstração que define um conjunto lógico de pods e como acessá-los. Um serviço expõe uma aplicação de rede em execução em um ou mais pods em um cluster. Ele fornece uma maneira abstrata de balancear a carga de pods.balancear a carga de pods.

Servidor de interface de programação de aplicativos (API): O servidor de API no Kubernetes expõe a APIdo Kubernetes (a interface usada para gerenciar, criar e configurar clusters do Kubernetes) e serve como ponto de entrada para todos os comandos e consultas.

Termos e conceitos de rede

Uma rede de computadores básica envolve conectar dois ou mais dispositivos de computação para compartilhar dados e trocar recursos, seja por cabos (com fio) ou Wi-Fi.

Na rede física, os servidores físicos estão conectados a equipamentos de rede física, como switches, roteadores e cabos Ethernet para se conectarem à internet.

Em redes virtuais, redes definidas por software (SDN), componentes como dispositivos ethernet virtuais e interfaces virtuais são instalados em bare metal servers ou máquinas virtuais para se conectar à internet. A implementação do Kubernetes depende do SDN para configurar e gerenciar a comunicação de rede entre clusters.

Antes de se aprofundar na rede Kubernetes, vale a pena avaliar os termos básicos de rede:

Host de
rede: um host de rede é qualquer computador conectado a uma rede que fornece informações, aplicação ou serviços a outros hosts ou nó na rede.

Endereço de Internet Protocol (IP): 
um endereço IP é um número exclusivo atribuído a cada dispositivo conectado a uma rede que usa o IP para comunicação.



Ele identifica a rede host do dispositivo e a localização do dispositivo na rede host. Localhost: localhost é um nome de host padrão que age como um endereço IP privado, apontando diretamente para o computador ou dispositivo que usa. Porta: uma porta identifica uma conexão específica entre os dispositivos de rede. Um número identifica cada porta. Os computadores usam números de porta para determinar qual aplicação, serviço ou processo deve receber mensagens específicas.

Network address translation (NAT): a
NAT altera endereços IP internos ou privados para endereços IP públicos ou globalmente roteáveis, permitindo acesso seguro à Internet. A NAT permite que um único endereço IP represente um grupo inteiro de dispositivos de computação. Agentes

de nó: 
os agentes de nó são agentes administrativos que monitoram os servidores de aplicação em um sistema host e encaminham solicitações administrativas para outros servidores. Espaço de

nomes de rede:
um espaço de nomes de rede é uma coleção de interfaces de rede e instruções de tabela de roteamento que fornece isolamento entre dispositivos

de rede. Proxy ou servidor proxy: 
um proxy fornece um gateway entre os usuários e a internet.

Como funciona a rede Kubernetes?

O Kubernetes foi criado para executar sistemas distribuídos com um plano de rede espalhado por um agrupamento de máquinas. Além de fornecer interconectividade entre componentes, a rede de cluster Kubernetes cria um ambiente perfeito onde os dados podem migrar livremente e de forma eficiente por meio de uma rede definida por software.

Outro recurso distinto da rede Kubernetes é sua estrutura de rede plana, o que significa que todos os componentes podem se conectar sem depender de outros equipamentos. Em Kubernetes, todos os pods em um cluster podem se comunicar com todos os outros pods, não importa em qual nó ele esteja sendo executado. A rede plana oferece uma maneira eficiente de compartilhar recursos e elimina a necessidade de alocação dinâmica de portas.

Em geral, a rede Kubernetes abstrai a complexidade, permitindo que os desenvolvedores e operadores se concentrem na criação e manutenção de aplicativos em vez de lidar com configurações de rede complexas.

Modelo de rede Kubernetes

O Kubernetes fornece um modelo de rede para ajudar a lidar com os desafios de orquestrar aplicações conteinerizadas em um ambiente distribuído. O tempo de execução do contêiner em cada nó implementa o modelo de rede e adere às seguintes regras:

cada pod tem seu próprio endereço IP, que pode ser roteado dentro do cluster. Essa funcionalidade elimina a necessidade de criar links entre pods e portas de mapeamento.

Como cada pod possui seu próprio endereço IP, a NAT não é necessária. Todos os pods podem se comunicar com todas as outras pods no cluster sem a NAT.

Agentes em um nó, como o kubelet, o agente do nó primário que é executado em cada nó, podem se comunicar com todos os pods nesse nó específico.

O modelo de rede Kubernetes se aplica a 4 tipos básicos de comunicação do Kubernetes:

1. Rede de contêiner para contêiner

Os contêineres são a menor unidade em uma rede Kubernetes. Nas configurações básicas de rede, os contêineres se comunicam em um único pod por meio do localhost.

Essa comunicação é possível porque os contêineres no mesmo pod compartilham o mesmo espaço de nome de rede, que inclui recursos de rede como armazenamento, endereço IP e espaço de porta.

2. Rede de pod para pod

A comunicação de pod para pod inclui comunicação entre pods no mesmo nó e comunicação entre pods em diferentes nós. Cada pod em um cluster do Kubernetes tem seu próprio endereço IP exclusivo, permitindo comunicação direta entre pods, independentemente do nó em que existam.

Além disso, cada cluster Kubernetes fornece automaticamente um serviço de sistema de nomes de domínio (DNS service) além do endereço IP do pod. O DNS service, onde os nomes são atribuídos a pods e serviços, cria nomes fáceis e legíveis para administradores, fornecendo um mecanismo leve para a descoberta de serviços.

3. Rede de pod para serviço

Um serviço no Kubernetes é uma abstração que define um conjunto lógico de pods e permite a exposição do tráfego externo, o balanceamento de carga e a descoberta de serviços para esses pods. Os serviços facilitam tanto a comunicação entre o pod-to-service como com o external-to-service.

De acordo com o modelo de rede Kubernetes, os endereços de IP dos pods são efêmeros. Portanto, se um pod falhar ou for excluído e um novo pod for criado em seu lugar, o novo pod provavelmente receberá um novo endereço IP.

Na comunicação pod-to-service, um ClusterIP é um tipo de serviço que fornece um endereço de IP virtual estável para um conjunto de pods. Esse IP interno pode ser acessado somente dentro do cluster e pode ser usado para comunicações internas entre pods e serviços.

O kube-proxy, instalado em todos os nós em um cluster, mantém as regras de rede no host e monitora as alterações nos serviços e pods. À medida que os pods são criados ou destruídos, o kube-proxy atualiza o iptables (um programa utilitário usado para criar regras no firewall do kernel do Linux para rotear o tráfego) para refletir essa alteração para que o tráfego enviado para o IP do serviço seja roteado corretamente.

4.Rede externa para serviço

A rede externa para serviço refere-se a expor e acessar serviços, como serviços ou bancos de dados externos, de fora do cluster Kubernetes.

O Kubernetes oferece vários serviços para facilitar o tráfego externo em um cluster:

ClusterIP: 
embora o ClusterIP seja o Kubernetes service padrão para comunicações internas, o tráfego externo pode acessá-lo por meio do kube-proxy. O ClusterIP pode ser útil ao acessar um serviço em um notebook ou depurar um serviço.

NodePort: 
o NodePort expõe o serviço em uma porta estática no IP de cada nó, tornando o serviço acessível fora do cluster. O NodePort é a maneira mais básica de executar a rede externa para serviço e é frequentemente usado para fins de teste, como testar o acesso público a um aplicativo.

LoadBalancer:
o padrão para redes de serviços externos, o LoadBalancer expõe o serviço externamente usando um balanceador de carga do provedor de nuvem e atribui ao serviço um endereço IP público. O tráfego do balanceador de carga externo é então direcionado para os pods de back-end.

ExternalName:
 Um serviço de nome externo permite o acesso a um serviço externo por nome DNS sem expô-lo no cluster DNS. Esse tipo de serviço ajuda a fornecer um nome DNS estável para serviços externos, como serviços de mensagens não hospedados no cluster.

Entrada:
a entrada do Kubernetes é uma coleção de regras de roteamento que envolvem o acesso externo a serviços dentro do cluster. O controlador de entrada é um balanceador de carga que atua como uma ponte de rede entre os Kubernetes services e os serviços externos.

Políticas de rede da Kubernetes

As políticas de rede Kubernetes são uma construção de aplicações que desempenha um papel vital na rede Kubernetes. Essas políticas permitem que administradores e desenvolvedores definam regras especificando como os pods podem se comunicar entre si e com outros endpoints de rede.

Políticas de rede são aplicadas usando a API de políticas de rede do Kubernetes e consistem nos seguintes componentes básicos:

Seletor de pod:
O seletor de pod especifica a quais pods a política se aplica com base em rótulos e seletores.

Ingress:
Ingress define regras para o tráfego de entrada para pods

Egress:
Egress define regras para o tráfego de saída de pods.

As políticas de rede do Kubernetes ajudam a definir e gerenciar políticas de segurança, definindo regras que controlam quais pods podem se comunicar entre si, evitando, assim, o acesso não autorizado e evitando ataques maliciosos.

As políticas de rede também garantem o isolamento entre pods e serviços, de modo que somente esses pods ou serviços possam se comunicar com um conjunto permitido de pares. Por exemplo, o isolamento é crítico para situações de multilocação quando DevOps ou outras equipes estão compartilhando o mesmo cluster do Kubernetes, mas trabalhando em projetos diferentes.

Para empresas com requisitos de conformidade específicos, as políticas de rede ajudam a especificar e aplicar controles de acesso à rede. Isso ajuda a cumprir as normas regulatórias e ajuda a garantir que o cluster adere às políticas da organização.

Interface de rede de contêiner (CNI) e plug-ins de rede

A Container Network Interface (CNI) é outra funcionalidade essencial vinculada à rede Kubernetes. Criada e mantida pela Cloud Native Computing Foundation e usado por Kubernetes e outros tempos de execução de contêineres, incluindo RedHat OpenShift e Apache Mesos, a CNI é uma especificação padronizada e um conjunto de APIs que definem como os plug-ins de rede devem habilitar a rede de contêineres.

Os plug-ins CNI podem atribuir endereços IP, criar namespaces de rede, configurar rotas de rede e assim por diante, para habilitar a comunicação de pod para pod, tanto dentro do mesmo nó quanto entre nós.

Enquanto o Kubernetes fornece uma CNI padrão, diversos plug-ins de CNI de terceiros, incluindo Calico, Flannel e Weave, são projetados para lidar com configuração e segurança em ambientes de rede baseados em contêineres.

Embora cada um possa ter diferentes funcionalidades e abordagens de rede, como redes de sobreposição ou roteamento direto, todos eles aderem às especificações CNI compatíveis com o Kubernetes.

Tutoriais do Kubernetes

Se quiser começar a trabalhar com o Kubernetes ou aprimorar suas habilidades existentes com as ferramentas de ecossistema do Kubernetes e do Kubernetes, experimente um desses tutoriais.

Soluções relacionadas
IBM Cloud Pak for Network Automation 

O IBM Cloud Pak for Network Automation é um pacote de nuvem que permite a automação e a orquestração das operações de infraestrutura de rede.

Explore o Cloud Pak Automation
Soluções de rede

As soluções de rede em nuvem da IBM oferecem conectividade de alto desempenho para otimizar suas aplicações e estimular o crescimento dos negócios.

Explore as soluções de rede da nuvem
Serviços de suporte a redes

Consolide o suporte ao datacenter com o IBM Technology Lifecycle Services para rede em nuvem e muito mais.

Serviços de rede em nuvem
Dê o próximo passo

Prepare a sua empresa com gerenciamento de DNS de ponta e soluções de rede na nuvem. Aumente a confiabilidade das suas aplicações e otimize o desempenho da rede com os principais serviços da IBM.

Explore as soluções de rede da nuvem Conheça os serviços de DNS gerenciados