Arquitetura Kubernetes: tudo o que você precisa saber em 2022
Publicados: 2021-01-05Índice
Sobre o Kubernetes
O Kubernetes é uma plataforma de código aberto com recursos como maximização de recursos, processo e atualização automática de implantação, dimensionamento automático, autorrecuperação, rollbacks e rollouts automatizados, balanceamento de carga de orquestradores de contêiner e descoberta de serviços, reinicialização automática, posicionamento automático, e auto-replicação, etc. O Kubernetes não é apenas um orquestrador de contêineres; também é um sistema operacional para aplicativos baseados em nuvem.
É como uma plataforma para executar um aplicativo semelhante a outros aplicativos executados no Windows, MacOS ou Linux com maior flexibilidade. Ele reduz a carga de orquestração e permite que os desenvolvedores se concentrem completamente em fluxos de trabalho centrados em contêiner para fins de operação de autoatendimento. Os desenvolvedores têm a vantagem de uma automação de alto nível na implantação e no gerenciamento de aplicativos. Ele pode ser integrado a qualquer ambiente para aprimorar os recursos.
Leia: Salário do Kubernetes na Índia
Arquitetura do Kubernetes
A arquitetura do Kubernetes consiste em camadas: camadas superiores e inferiores. Nesse indivíduo, as máquinas físicas ou virtuais são reunidas em um cluster. Uma rede compartilhada é usada para comunicação entre cada servidor. O Kubernetes tem um mestre (pelo menos) atuando como um plano de controle, um sistema de armazenamento distribuído. Os vários nós de cluster também são conhecidos como Kubelets.
- O mestre do Kubernetes, plano de controle, agenda as implantações, expõe a API e gerencia o cluster geral do Kubernetes.
- O nó do cluster executa um tempo de execução do contêiner, agente para comunicação com o mestre e outros componentes de monitoramento, log, etc.
A arquitetura do Kubernetes e os componentes do Kubernetes são ilustrados na imagem abaixo.
Fonte

Vamos dar uma olhada nos componentes do Kubernetes .
Componentes do Kubernetes
Mestre: Plano de Controle do Kubernetes
O mestre mantém os dados de cada objeto no Kubernetes. Como ele gerencia todo o cluster, por isso é chamado de Master. Ele controla os estados dos objetos, mantém a correspondência do estado real do sistema com o estado necessário, responde a mudanças, etc.
Ele contém os três componentes importantes a seguir:
- Servidor de API Kube : servidor de API Kubernetes
- Kube- Scheduler: agendamento de pod em nós de trabalho
- Kube- Controller: Gerencia a replicação do pod
Se houver vários nós mestres, esses componentes serão replicados em todos os nós mestres.
A orquestração do ciclo de vida para vários aplicativos que incluem atualizações, dimensionamento etc. é feita pelo API Server. Funciona como um gateway para os clientes que não estão dentro do cluster. O servidor de API faz a autenticação. Ele também atua como um intermediário para pods e nós.
O Controlador executa as seguintes tarefas:
- Executando os loops de controle do núcleo
- Fazendo alterações para o status de condução para o estado necessário.
- Observando o estado do cluster
Também oferece roteamento, serviços de armazenamento, balanceamento de carga, serviços de rede DNS, instâncias de VM integrando-se a nuvens públicas. Os diferentes controladores que direcionam o estado para dimensionamento automático, nós, serviços e pods, namespaces.
O escalonamento do container ao longo dos nós é feito pelo Scheduler dentro do cluster; considerando diferentes limitações/garantias de recursos ou especificações de antiafinidade/afinidade.
A taxonomia do plano de controle do Kubernetes é mostrada abaixo:
Fonte
Nós de cluster: Kubelets
Kubelets são máquinas diferentes que são responsáveis por executar contêineres. O mestre faz o gerenciamento dos nós do cluster. Também é chamado de Minion. Os nós do cluster são considerados o controlador primário do Kubernetes. Ele impulsiona o Docker, a camada de execução de contêineres.
Ele contém os seguintes componentes:
- Pod: Grupo de contêineres
- Docker: tecnologia baseada em contêiner, espaço de usuário do sistema operacional
- Kubelet: Agentes de contêiner que são responsáveis por manter o conjunto de pods.
- Kube-proxy: roteia o tráfego que entra em um nó do serviço.
A taxonomia do nó de cluster do Kubernetes é mostrada abaixo:
Fonte
Pods e serviços
Os pods são um conceito importante no Kubernetes com o qual os desenvolvedores interagem. Representa o processo em execução. Ele pode hospedar pilhas de aplicativos integradas verticalmente, como aplicativos WordPress LAMP. Abaixo estão os diferentes tipos de pods:
Tipo de cápsula | Funcionalidade |
Conjunto de réplicas | Tipo de pod simples![]() Garante o funcionamento de pods fixos |
Desdobramento, desenvolvimento | Um gerenciamento de pod de forma declarativa via ReplicaSet Atualizações contínuas e mecanismos de reversão estão incluídos. |
StatefulSet | Gerencia pods que devem persistir |
Daemonset | Garante que cada nó execute uma instância de pod. Gerencia serviços de cluster, como encaminhamento de log e monitoramento de integridade. |
CronJob e Job | Executa trabalhos de curta duração como um agendador |
Um pod pode consistir em vários contêineres e volumes externos. A taxonomia do pod é mostrada no diagrama abaixo:
Fonte
Os serviços fazem o rastreamento de Pods. Para definir associações de pod e serviço, são usados seletores ou rótulos em vez de atribuições de endereço IP. Isso simplifica a adição de pods ao serviço e o lançamento de novas versões. A seguir estão os diferentes tipos de serviço:
tipo de serviço | Funcionalidade |
ClusterIP | Tipo padrão; Expõe o serviço em um IP interno e torna o serviço acessível |
NodePort | Permite que os desenvolvedores configurem seus próprios balanceadores de carga |
Balanceador de carga | Automatiza sua configuração |
Nome Externo | Comumente usado para criar serviço no Kubernetes. |
A implantação de nuvem típica usada é do tipo LoadBalancer. O Kubernetes oferece suporte à abstração do Ingress de alto nível para resolver a complexidade. Os usuários podem exibir diferentes serviços no mesmo endereço IP usando os mesmos balanceadores de carga.
Leia mais: Openshift vs Kubernetes: Diferença entre Openshift e Kubernetes
Rede Kubernetes
Principalmente CNI (Container Network Interface) é usado para obscurecer a rede básica. Calico, uma opção totalmente roteada, também pode ser usada. Em ambas as opções, a comunicação é feita em uma rede de pods em todo o cluster e controlada por Calico ou Flannel (provedor CNI). Os contêineres podem se comunicar dentro de um pod pelo host local sem qualquer restrição. A movimentação de fontes externas para serviços ou pods para serviços é feita via Kube-proxy.
Armazenamento persistente
Um diretório com alguns dados é chamado de Volumes no Kubernetes. Os diretórios são acessíveis aos pods. Existem muitos tipos de armazenamento no Kubernetes. Os contêineres dentro do pod podem consumir qualquer armazenamento. Os serviços de nuvem pública, como NFS, Amazon Elastic Block Store, Iscsi, CephFS, etc., são usados para montar arquivos e armazenamento em bloco em um pod. PVs (PersistentVolumes) são objetos em todo o cluster vinculados aos recursos de armazenamento existentes.
Em um namespace, a solicitação de consumo de armazenamento é iniciada por PersistentVolumeClaim. Os diferentes estados de PV estão disponíveis, vinculados, liberados e com falha. As StorageClasses são a camada de abstração. Ele diferencia a qualidade de armazenamento subjacente e separa várias características. O pod pode solicitar novo armazenamento dinamicamente com a ajuda de StorageClasses e PersistentVolumeClaim.
Fonte
Serviços de descoberta e publicação
Dependendo da versão do cluster, o Kubernetes depende do Kube-DNS ou do CoreDNS para descobrir os serviços. Esses serviços DNS integrados criam, atualizam e removem registros DNS. Ele ajuda os aplicativos a direcionar outros pods e serviços por meio de um esquema de nomenclatura consistente e simples.
Exemplo ( Fonte )
Para um serviço Kubernetes, o registro DNS pode ser service.namespace.svc.cluster.local
Registro DNS, um pod pode ter: 10.32.0.125.namespace.pod.cluster.local
Fonte
Namespaces
O cluster físico contendo clusters virtuais é chamado de namespaces. Ele fornece um ambiente virtual separado para vários usuários, juntamente com os respectivos direitos de acesso para objetos do Kubernetes.
Rótulos
Os rótulos são usados para diferenciar recursos presentes em um único namespace. Os atributos são definidos por pares de chave ou valor. Os rótulos são usados para mapear estruturas de organização em objetos do Kubernetes. Ele pode descrever o ambiente, o estado da versão, a camada do aplicativo ou a identificação dos clientes. Impede o hard linking de objetos.
Anotações
As anotações são usadas para adicionar bagagem ou metadados não identificados arbitrários a objetos. Ele é usado como uma ferramenta de configuração declarativa.

Leitura obrigatória: Kubernetes vs. Docker: principais diferenças que você deve conhecer
Obtenha diplomas de Engenharia de Software das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Conclusão
A tecnologia do Kubernetes está se desenvolvendo rapidamente e é uma solução econômica para o futuro. Oferece grande estabilidade às aplicações.
Todos os conceitos básicos da arquitetura do Kubernetes e dos componentes do Kubernetes são explicados neste artigo.
Se você estiver interessado em aprender mais sobre Kubernetes, big data, confira o Programa PG Executivo em Desenvolvimento de Software Full-stack do upGrad & IIIT-B, projetado para profissionais que trabalham e oferece mais de 500 horas de treinamento rigoroso, mais de 9 projetos e atribuições, status de ex-alunos do IIIT-B, projetos práticos práticos e assistência de trabalho com as principais empresas.
