We couldn't find a match for given <KEYWORD>, please try again.

O que é arquitetura de Kubernetes?

O Kubernetes é uma arquitetura que oferece um mecanismo superficialmente associado para detecção de serviços em um cluster. Um cluster de Kubernetes tem uma ou mais camadas de controle e um ou mais nós de processamento. Em geral, a camada de controle é responsável por gerenciar o cluster geral, expor a interface de programação de aplicativos (API, pela sigla em inglês) e programar o início e o desligamento dos nós de processamento com base em uma configuração desejada. Cada um dos nós de processamento executa um tempo de execução de contêiner, como o Docker, juntamente com um agente, kubelet, que se comunica com a camada de controle. Cada nó pode ser composto de servidores bare metal ou máquinas virtuais (VMs, pela sigla em inglês) locais ou com base em nuvem.

Introdução ao vSphere with Tanzu para administradores do vSphere

Por que escolher a virtualização da VMware para Kubernetes e contêineres

Quais são os componentes da arquitetura de Kubernetes?

Os principais componentes de um cluster de Kubernetes incluem:

Nós. Os nós são VMs ou servidores físicos que hospedam aplicativos em contêineres. Cada nó em um cluster pode executar uma ou mais instâncias de aplicativo. Pode haver apenas um nó, no entanto, normalmente um cluster de Kubernetes terá vários nós (e implantações com centenas ou mais nós não são incomuns).

Registro de imagem. As imagens de contêineres são mantidas no registro e transferidas para os nós pela camada de controle para execução em pods de contêineres.

Pods. É aqui que os aplicativos em contêineres são executados. Eles podem conter um ou mais contêineres e são a menor unidade de implantação para aplicativos em um cluster de Kubernetes.

O que é a arquitetura da camada de controle do Kubernetes?

Uma camada de controle do Kubernetes é a camada de controle de um cluster de Kubernetes. Seus componentes incluem:

  • kube-apiserver. Como o próprio nome sugere, o servidor de API expõe a API do Kubernetes, que é a central de comunicações. As comunicações externas via interface de linha de comando (CLI, pela sigla em inglês) ou outras interfaces de usuário (UI, pela sigla em inglês) são transmitidas ao kube-apiserver, e todas as comunicações entre as camadas de controle e o nó também são transmitidas por meio do servidor de API.
  • etcd. O repositório de valores de chave em que todos os dados relacionados ao cluster são armazenados. O etcd é altamente disponível e consistente, pois todo o acesso ao etcd é feito por meio do servidor de API. As informações no etcd são geralmente formatadas em YAML legível por humanos (que é um acrônimo recursivo para "YAML Ain’t Markup Language").
  • kube-scheduler. Quando um novo pod é criado, esse componente o atribui a um nó para execução com base em requisitos de recursos, políticas e especificações de "afinidade" em relação à localização geográfica e à interferência em outras cargas de trabalho.
  • kube-controller-manager. Embora um cluster de Kubernetes tenha várias funções de controlador, todas elas são compiladas em um único binário conhecido como kube-controller-manager.

Estas são as funções do controlador incluídas neste processo:

  • Controlador de replicação. Garante que o número correto de pods exista para cada pod replicado em execução no cluster
  • Controlador de nós. Monitora a integridade de cada nó e notifica o cluster quando os nós ficam on-line ou param de responder
  • Controlador de endpoints. Conecta pods e serviços para preencher o objeto Endpoints
  • Controladores de tokens e contas de serviço. Aloca tokens de acesso de API e contas padrão para novos namespaces no cluster
  • cloud-controller-manager. Se o cluster for parcial ou totalmente baseado em nuvem, o gerenciador do controlador de nuvem vinculará o cluster à API do provedor de nuvem. Somente os controles específicos do provedor de nuvem serão executados. O gerenciador do controlador de nuvem não existe nos clusters totalmente locais. Mais de um gerenciador de controlador de nuvem pode estar em execução em um cluster para oferecer tolerância a falhas ou melhorar o desempenho geral da nuvem.

Os elementos do gerenciador do controlador de nuvem incluem:

  • Controlador de nós. Determina o status de um nó com base em nuvem que parou de responder, por exemplo, se ele foi excluído
  • Controlador de rotas. Estabelece rotas na infraestrutura do provedor de nuvem
  • Controlador de serviços. Gerencia os balanceadores de carga do provedor de nuvem

O que é arquitetura de nó do Kubernetes?

Os nós são as máquinas, sejam VMs ou servidores físicos, nos quais o Kubernetes coloca os pods para execução. Os componentes do nó incluem:

kubelet. Cada nó tem um agente chamado kubelet. Ele garante que o contêiner descrito em PodSpecs esteja funcionando corretamente.

kube-proxy. Um proxy de rede em cada nó que mantém os nós da rede e permite a comunicação dos pods com as sessões de rede, dentro ou fora do cluster, usando a filtragem de pacotes do sistema operacional (SO), se disponível.

tempo de execução do contêiner. Software responsável pela execução dos aplicativos em contêineres. Embora o Docker seja o mais popular, o Kubernetes oferece suporte a qualquer tempo de execução que esteja de acordo com a CRI (Container Runtime Interface) do Kubernetes.

Quais são os outros componentes da infraestrutura de Kubernetes?

Pods. Ao encapsular um (ou mais) contêineres de aplicativos, os pods são a unidade de execução mais básica de um aplicativo do Kubernetes. Cada pod contém os recursos de armazenamento e código necessários para a execução e tem seu próprio endereço IP. Os pods também incluem opções de configuração. Normalmente, um pod contém um ou mais contêineres que são associados a uma função de negócios ou aplicativo e compartilham um conjunto de recursos e dados.

Implantações. Um método de implantação de pods de aplicativos em contêineres. Um estado desejado descrito em uma implantação fará com que os controladores alterem o estado real do cluster para atingir esse estado de maneira ordenada. Saiba mais sobre as implantações do Kubernetes.

ReplicaSet. Garante que um número especificado de pods idênticos esteja em execução em qualquer ponto no tempo.

DNS do cluster. Atende aos registros DNS necessários à operação dos serviços de Kubernetes.

Monitoramento de recursos de contêiner. Captura e registra métricas de contêiner em um banco de dados central.

Quais são as práticas recomendadas e os princípios de design da arquitetura de Kubernetes?

As práticas recomendadas de contêineres do Gartner sugerem uma estratégia de plataforma que considere segurança, governança, monitoramento, armazenamento, rede, gerenciamento do ciclo de vida do contêiner e orquestração como o Kubernetes.

Veja a seguir algumas práticas recomendadas para a arquitetura de clusters de Kubernetes:

  • Verifique se você executou a atualização para a versão mais recente do Kubernetes (1.18 no momento da redação deste documento).
  • Invista antecipadamente em treinamento para as equipes de desenvolvedores e operações.
  • Estabeleça a governança em toda a empresa. Garanta que as ferramentas e os fornecedores estejam alinhados e integrados à orquestração do Kubernetes.
  • Reforce a segurança integrando processos de verificação de imagens como parte do processo de CI/CD, durante as fases de criação e execução. O código aberto obtido de um repositório do Github sempre deve ser considerado suspeito.
  • Adote o controle de acesso baseado em função (RBAC, pela sigla em inglês) em todo o cluster. Os modelos de privilégio mínimo e confiança zero devem ser o padrão.
  • Proteja ainda mais os contêineres usando apenas usuários não root e tornando o sistema de arquivos somente leitura.
  • Evite o uso do valor padrão, já que as declarativas simples são menos propensas a erros e demonstram a intenção com mais clareza.
  • Tenha cuidado ao usar imagens básicas do Docker Hub, que podem conter malware ou ficar sobrecarregadas com código desnecessário. Comece com um código simples e enxuto e desenvolva os pacotes a partir dele. Imagens pequenas são criadas com mais rapidez, ficam menores no disco e a extração de imagens também é mais rápida.
  • Mantenha a simplicidade dos contêineres. Um processo por contêiner permitirá que o orquestrador informe se esse processo está íntegro ou não.
  • Na dúvida, provoque uma falha. O Kubernetes reiniciará um contêiner com falha, portanto, não o reinicie em caso de falha.
  • Seja detalhado. Os rótulos descritivos são inestimáveis para os desenvolvedores atuais, pois eles seguem as instruções neles contidas.
  • Não seja muito detalhado com os microsserviços. Nem toda função em um componente de código lógico precisa ter seu próprio microsserviço.
  • Automatize, quando fizer sentido. A automação do pipeline de CI/CD evita totalmente as implantações manuais do Kubernetes.
  • Use livenessProbe e readinessProbe para gerenciar os ciclos de vida dos pods; caso contrário, os pods poderão ser encerrados durante a inicialização ou começarem a receber solicitações do usuário antes que estejam prontos.

A arquitetura do Kubernetes é direta e intuitiva. A associação superficial entre a camada de controle e o nó permite uma flexibilidade quase infinita e a capacidade de dimensionamento horizontal quase instantânea de um aplicativo para atender às necessidades em constante mudança, migrar usuários para novas compilações e oferecer suporte à migração do ambiente local para os nós com base em nuvem ou entre várias nuvens, a fim de que os recursos desejados de cada provedor de nuvem sejam utilizados.

Soluções e produtos relacionados

Modernização de aplicativos com o Kubernetes

Permitem que você execute aplicativos tradicionais e modernos simultaneamente.

VMware Tanzu Kubernetes Grid

Otimize as operações na infraestrutura multi-cloud.

Horizon Cloud on Microsoft Azure

Plataforma de desktop virtual nativa da nuvem