DEV Community

Cover image for O que é Kurbenetes
Kauê Matos
Kauê Matos

Posted on • Edited on

O que é Kurbenetes

O Kubernetes (também conhecido como k8s ou "kube") é uma plataforma de orquestração de containers open source que automatiza grande parte dos processos manuais necessários para implantar, gerenciar e escalar aplicações em containers.

O que são clusters Kubernetes?

Se você deseja agrupar os hosts executados nos containers Linux®(LXC) em clusters, o Kubernetes ajuda a gerenciá-los de maneira fácil e eficiente e em grande escala.

Clusters Kubernetes podem abranger hosts em nuvens on-premise, públicasprivadas ou híbridas. Por isso, o Kubernetes é a plataforma ideal para hospedar aplicações nativas em nuvem que exigem escalonamento rápido, como a transmissão de dados em tempo real pelo Apache Kafka.

Controle seus clusters e aplicações em um único console

Quem contribui para o Kubernetes?

Originalmente, o Kubernetes foi criado e desenvolvido pelos engenheiros do Google. O Google foi um dos pioneiros no desenvolvimento da tecnologia de containers Linux . Além disso, a empresa já revelou publicamente que tudo no Google é executado em containers. Essa é a tecnologia por trás dos serviços de nuvem da empresa.

O Google gera mais de 2 bilhões de implantações de containers por semana, todas viabilizadas pela plataforma interna da empresa, o Borg. Ele foi o antecessor do Kubernetes. As lições aprendidas ao longo dos anos de desenvolvimento do Borg foi a principal influência para o desenvolvimento da tecnologia do Kubernetes.

Uma curiosidade sobre o Kubernetes é que os sete raios do logotipo fazem referência ao nome original do projeto, "Project Seven of Nine" (Projeto Sete de Nove).

A Red Hat foi uma das primeiras empresas a trabalhar com o Google no desenvolvimento do Kubernetes, antes mesmo do lançamento da plataforma. Foi assim que nos tornamos o segundo maior colaborador do projeto upstream para essa tecnologia. Em 2015, o Google doou o projeto Kubernetes à recém-criada Cloud Native Computing Foundation (CNCF).

Vantagens do Kubernetes

A principal vantagem de usar o Kubernetes no seu ambiente, especialmente se estiver otimizando o desenvolvimento de apps para a nuvem, é que você terá uma plataforma para programar e executar containers em clusters de máquinas virtuais (VMs) ou físicas.

Em termos mais abrangentes, com o Kubernetes, é mais fácil implementar e confiar totalmente em uma infraestrutura baseada em containers para os ambientes de produção. Como o propósito do Kubernetes é automatizar completamente as tarefas operacionais, você faz as mesmas tarefas que outros sistemas de gerenciamento ou plataformas de aplicação permitem, mas para seus containers.

Os desenvolvedores também podem criar apps nativas em nuvem com o Kubernetes como plataforma de ambiente de execução. Para isso, basta usarem os padrões do Kubernetes. Eles são as ferramentas necessárias para desenvolvedores criarem serviços e aplicações baseados em container.

Com o Kubernetes, você pode:

  • Orquestrar containers em vários hosts.
  • Fazer melhor uso do hardware para maximizar os recursos necessários na execução de apps empresariais.
  • Controlar e automatizar atualizações e implantações de aplicações.
  • Ativar e adicionar armazenamento para executar apps stateful.
  • Escalar aplicações em containers e os recursos correspondentes com rapidez.
  • Gerenciar os serviços de maneira assertiva para que a execução das aplicações implantadas ocorra sempre como o esperado.
  • Permitir a autorrecuperação e verificação de integridade das apps ao automatizar o posicionamento, a reinicialização, a replicação e o escalonamento.

No entanto, o Kubernetes depende de outros projetos para oferecer esses serviços orquestrados. Com a inclusão de outros projetos open source, fica claro todo o poder do Kubernetes. Dentre os recursos necessários, podemos citar:

  • Registro, usando projetos como o Docker Registry.
  • Rede, usando projetos como o OpenvSwitch e roteamento da edge.
  • Telemetria, usando projetos como Kibana, Hawkular e Elastic.
  • Segurança, usando projetos como LDAPSELinux, RBAC e OAUTH com camadas de multilocação.
  • Automação, com a inclusão de Ansible playbooks para gerenciamento de ciclo de vida do cluster e instalação.
  • Serviços, usando um catálogo vasto de padrões de apps conhecidos.

Veja uma introdução aos containers Linux e à tecnologia de orquestração de container. Neste curso sob demanda, você verá como implantar serviços e aplicações em container, testá-los usando o Docker e implantá-los em um cluster Kubernetes usando o Red Hat® OpenShift®.

Nós, pod e outros termos referentes ao Kubernetes

Como acontece com a maioria das tecnologias, a linguagem específica do Kubernetes pode ser um obstáculo para muitas pessoas. Vamos analisar alguns dos termos mais comuns para ajudar você a entender melhor a plataforma.

Control plane: conjunto de processos que controlam os nós do Kubernetes. É aqui que todas as atribuições de tarefas se originam.

Nós: realizam as tarefas solicitadas que foram atribuídas pelo control plane.

Pod: um grupo de um ou mais containers implantados em um nó. Todos os containers em um pod têm o mesmo endereço IP, IPC, nome de host e outros recursos. Pods abstraem a rede e o armazenamento do container subjacente. Isso facilita a movimentação dos containers pelo cluster.

Controlador de replicações: controla quantas cópias idênticas de um pod devem ser executadas em um determinado local do cluster.

Serviço: desacopla as definições de trabalho dos pods. Os proxies de serviço do Kubernetes recebem as solicitações automaticamente no pod certo, não importa para onde ele vá no cluster nem se ele foi substituído.

Kubelet: este serviço é executado em nós, lê os manifestos do container e inicia e executa os containers definidos.

kubectl: a ferramenta de configuração da linha de comando do Kubernetes.

Como o Kubernetes funciona?

Uma implantação do Kubernetes em funcionamento é chamada de cluster. Ele é dividido em duas partes: o control plane e as máquinas de computação (ou nós).

Cada nó tem o próprio ambiente Linux®, que pode ser físico ou uma máquina virtual. Os nós executam pods, formados por containers.

O control plane é responsável por manter o estado desejado do cluster. Por exemplo, as aplicações que estão sendo executadas e as imagens de container que elas usam. As máquinas de computação executam as aplicações e cargas de trabalho.

O Kubernetes é executado em um sistema operacional, como o Red Hat® Enterprise Linux, e interage com pods de containers executados em nós.

O control plane do Kubernetes aceita os comandos de um administrador (ou equipe de DevOps) e retransmite essas instruções às máquinas de computação.

Essa retransmissão é realizada em conjunto com vários serviços para decidir automaticamente qual nó é o mais adequado para a tarefa. Depois, os recursos são alocados e os pods do nó atribuídos para cumprir a tarefa solicitada.

O estado desejado do cluster do Kubernetes define quais aplicações ou outras cargas de trabalho serão executadas, as imagens que elas usarão, os recursos disponibilizados para elas e outros detalhes de configuração.

Em termos de infraestrutura, o modo de gerenciamento dos containers não é muito diferente. O controle sobre os containers acontece em um nível superior, tornando-o mais refinado, sem a necessidade de microgerenciar cada container ou nó separadamente.

Você só precisa configurar o Kubernetes e definir os nós, os pods e os containers presentes neles. O Kubernetes faz toda a orquestração dos containers.

Você escolhe o ambiente de execução do Kubernetes. Ele pode ser servidores bare-metal, provedores de nuvem pública, máquinas virtuais e nuvens privadas e híbridas. Uma das principais vantagens do Kubernetes é que ele funciona em vários tipos de infraestrutura.

Conheça outros componentes da arquitetura do Kubernetes

Docker

É possível usar o Docker como um ambiente de execução de container orquestrado pelo Kubernetes. Quando o Kubernetes programa um pod para um nó, o kubelet no nó instrui o Docker a iniciar os containers especificados.

Em seguida, o kubelet coleta o status dos containers do Docker e agrega essa informação no control plane continuamente. O Docker insere os containers nesse nó e os inicia e interrompe normalmente.

A diferença ao usar o Kubernetes com o Docker é que um sistema automatizado solicita que o Docker realize essas tarefas em todos os nós de todos os containers, em vez do administrador efetuar essas solicitações manualmente.

Infraestrutura nativa do Kubernetes

Atualmente, a maioria das implantações on-premises do Kubernetes é executada em uma infraestrutura virtual, com cada vez mais implantações em servidores bare-metal. Isso é uma evolução natural em data centers. O Kubernetes funciona como a ferramenta de gerenciamento do ciclo de vida e da implantação de aplicações em container. Já no gerenciamento de infraestrutura, são usadas ferramentas diferentes.

Mas suponha que você criou o data center do zero para ser compatível com containers, incluindo a camada de infraestrutura.

Você já começaria com servidores bare-metal e armazenamento definido por software, implantado e gerenciado pelo Kubernetes. Assim, a infraestrutura terá os mesmos benefícios de autoinstalação, autoescalamento e autorrecuperação que um container. Esse é o propósito da infraestrutura nativa do Kubernetes.

PODS

Os "PODs" são uma unidade fundamental de implantação no Kubernetes, um sistema de orquestração de contêineres amplamente usado para automatizar o gerenciamento, escalabilidade e implantação de aplicativos em contêineres. Os PODs são a menor unidade implantável no Kubernetes e são projetados para conter um ou mais contêineres relacionados que compartilham o mesmo ambiente de execução.

Aqui estão alguns conceitos-chave relacionados aos PODs no Kubernetes:

  1. POD: Um POD é uma abstração que representa um único processo em um cluster Kubernetes. Um POD pode conter um ou mais contêineres, mas esses contêineres compartilham o mesmo namespace de rede e armazenamento, o que significa que eles podem se comunicar entre si usando o localhost e acessar os mesmos volumes montados.
  2. Contêineres em um POD: Os contêineres dentro de um POD geralmente estão relacionados de alguma forma e compartilham recursos, como portas de rede e armazenamento. Isso é útil quando você tem contêineres que precisam trabalhar juntos para formar um aplicativo completo. Por exemplo, você pode ter um POD com um contêiner web e um contêiner de banco de dados que se comunicam internamente.
  3. Unidade de Implantação: Os PODs são a unidade básica para implantar aplicativos no Kubernetes. Quando você implanta um aplicativo, você geralmente cria um ou mais PODs para executar as partes do aplicativo. Os PODs podem ser escalados horizontalmente para atender à demanda.
  4. Escalabilidade: O Kubernetes facilita a escalabilidade de PODs. Você pode dimensionar horizontalmente um POD replicando-o para lidar com cargas de trabalho maiores. Isso é feito criando vários PODs com o mesmo conjunto de contêineres e distribuindo o tráfego entre eles.
  5. Gerenciamento de Recursos: Os PODs podem ser configurados com recursos específicos, como CPU e memória. Isso permite que o Kubernetes aloque recursos de forma eficiente e justa entre os PODs em um cluster.
  6. Balanceamento de Carga: O Kubernetes fornece serviços para equilibrar a carga entre os PODs. Isso garante que o tráfego seja distribuído uniformemente entre os PODs de um aplicativo, melhorando a disponibilidade e a escalabilidade.

Top comments (0)