O que é um cluster de Kubernetes?

Um cluster de Kubernetes é um conjunto de nós que executam aplicativos em contêineres. Os pacotes de aplicativos em contêineres contêm um aplicativo e alguns serviços necessários. Eles são mais leves e flexíveis que as máquinas virtuais. Dessa forma, os clusters de Kubernetes permitirão que os aplicativos sejam desenvolvidos, movidos e gerenciados mis facilmente.

Os clusters de Kubernetes permitem que os contêineres sejam executados em várias máquinas e ambientes: virtuais, físicos, com base em nuvem e locais. Ao contrário das máquinas virtuais, os contêineres de Kubernetes não estão restritos a um sistema operacional específico. Em vez disso, eles podem compartilhar sistemas operacionais e ser executados em qualquer lugar.

Os clusters de Kubernetes são compostos por um nó mestre e vários nós de trabalho. Esses nós podem ser computadores físicos ou máquinas virtuais, dependendo do cluster.

O nó mestre controla o estado do cluster; por exemplo, quais aplicativos estão sendo executados e suas imagens de contêiner correspondentes. O nó mestre é a origem de todas as atribuições de tarefa. Ele coordena processos como:

  • Agendamento e dimensionamento de aplicativos
  • Manutenção do estado de um cluster
  • Implementação de atualizações

Os nós de trabalho são os componentes que executam esses aplicativos. Esses nós executam tarefas atribuídas pelo nó mestre. Eles podem ser máquinas virtuais ou computadores físicos, todos operando como parte de um único sistema.

Deve haver pelo menos um nó mestre e um nó de trabalho para que o cluster de Kubernetes possa operar. Para produção e validação, o cluster é distribuído por vários nós de trabalho. Para testes, todos os componentes podem ser executados no mesmo nó virtual ou físico.

O namespace é uma forma de o usuário do Kubernetes organizar vários clusters diferentes em apenas um cluster físico. Ele permite que os usuários dividam recursos no cluster físico entre diferentes equipes por meio de cotas de recursos. Por isso, ele é ideal em situações que envolvem projetos complexos ou várias equipes.

 

Como o cluster de Kubernetes é formado?

 

Um cluster de Kubernetes contém seis componentes principais:

  1. Servidor de API: Expõe uma interface REST para todos os recursos de Kubernetes. É um front-end da camada de controle do Kubernetes.
  2. Programador: Insere contêineres de acordo com métricas e requisitos de recursos. Identifica os pods sem nó atribuído e seleciona os nós em que eles serão executados.
  3. Gerente de controladores: Executa processos de controladores e reconcilia o estado real de um cluster com as especificações desejadas. Gerencia controladores como os de nó, endpoint e replicação.
  4. Kubelet: Garante que os contêineres sejam executados em um pod ao interagir com o mecanismo do Docker, o programa padrão para criar e gerenciar contêineres. Seleciona um conjunto de PodSpecs fornecidos e garante que os contêineres correspondentes sejam totalmente operacionais.
  5. Kube-proxy: Gerencia a conectividade da rede e mantém regras da rede entre os nós. Implementa o conceito de Serviço de Kubernetes em cada nó de um determinado cluster.
  6. Etcd: Armazena todos os dados de cluster. Atua como um local armazenamento de Kubernetes consistente e altamente disponível. 

 

Cada um desses seis componentes pode ser executado no Linux ou como contêiner do Docker. O nó mestre é executado no servidor de API, no programador e no gerente de controladores, e os nós de trabalho são executados no kubelet e no kube-proxy.

 

Como posso trabalhar com um cluster de Kubernetes?

 

Antes de trabalhar com um cluster de Kubernetes, é necessário determinar o estado desejado dele. O estado desejado do cluster de Kubernetes define vários elementos operacionais, incluindo:

  • Aplicativos e cargas de trabalho que devem estar em execução
  • Imagens que esses aplicativos deverão usar
  • Recursos que devem ser fornecidos para esses aplicativos
  • Quantidade das réplicas necessárias

 

Para definir um estado desejado, são usados arquivos JSON ou YAML (conhecidos como manifestos) para especificar o tipo de aplicativo e o número de réplicas necessárias para executar o sistema.

 

Os desenvolvedores usam a API de Kubernetes para definir o estado desejado de um cluster. Essa interação do desenvolvedor utiliza a interface de linha de comando (kubectl) ou aproveita a API para interagir diretamente com o cluster para definir o estado desejado manualmente. Em seguida, o nó mestre comunicará o estado desejado aos nós de trabalho por meio da API.

 

O Kubernetes gerencia clusters automaticamente para promover o alinhamento com o estado desejado deles por meio da camada de controle do Kubernetes. As responsabilidades de uma camada de controle de Kubernetes incluem programar a atividade de clusters e registrar e responder a eventos de clusters.

 

A camada de controle do Kubernetes executa loops de controle contínuos para garantir que o estado real do cluster corresponda ao estado desejado. Por exemplo, se você implantar um aplicativo para execução com cinco réplicas e uma delas falhar, a camada de controle do Kubernetes registrará essa falha e implantará uma réplica adicional para que o estado desejado das cinco réplicas seja mantido.

 

A automação ocorre por meio do Gerador de eventos de ciclo de vida do pod (PLEG, pela sigla em inglês). Essas tarefas automáticas podem incluir:

  • Iniciar e reiniciar contêineres
  • Ajustar o número de réplicas para um aplicativo
  • Validar imagens de contêineres
  • Iniciar e gerenciar contêineres
  • Implementar atualizações e reversões

 

 

Como crio um cluster de Kubernetes?

 

Você pode criar e implantar um cluster de Kubernetes em uma máquina virtual ou física. É recomendável que novos usuários comecem criando um cluster de Kubernetes usando o Minikube. Ele é uma ferramenta de código aberto compatível com os sistemas operacionais Linux, Mac e Windows. O Minikube pode ser usado para criar e implantar um cluster simples e otimizado que contenha apenas um nó de trabalho.

 

Além disso, você pode usar padrões de Kubernetes para automatizar o gerenciamento de dimensionamento do seu cluster. Os padrões de Kubernetes facilitam o reuso de arquiteturas com base em nuvem para aplicativos em contêiner. Mesmo fornecendo uma quantidade de APIs úteis, o Kubernetes não oferece diretrizes para incorporar essas ferramentas em um sistema operacional com êxito. Os padrões de Kubernetes oferecem uma forma consistente de acessar e reutilizar arquiteturas existentes. Em vez de criar essas estruturas por conta própria, você pode aproveitar uma rede reutilizável de esquemas de clusters de Kubernetes.

 

Produtos, soluções e recursos relacionados a clusters de Kubernetes da VMware

VMware NSX: uma plataforma líder em virtualização de segurança e rede empresarial

O VMware NSX Data Center oferece uma plataforma completa de virtualização de rede e segurança para L2-L7, permitindo o gerenciamento da rede inteira como uma única entrada por um painel único de controle.

VMware Cloud PKS: clusters de Kubernetes

Agilize a inovação com clusters de Kubernetes econômicos e fáceis de usar

vSphere Integrated Containers

Obtenha a infraestrutura de contêiner empresarial para ajudar as operações de TI a executar aplicativos tradicionais e em contêineres paralelamente em uma plataforma comum com o vSphere Integrated Containers.

Redes de contêineres com VMware NSX

Proporcione rede e segurança integrados em toda a pilha para microsserviços e aplicativos em contêineres.

O que é o Cloud Management Platform?

O VMware Cloud Management Platform é um gerenciador de ambientes híbridos (multi-cloud) que executam cargas de trabalho tradicionais e em contêineres (nativas da nuvem). Saiba mais.