O que é Kubernetes? Por que usar como serviço?

O que é Kubernetes? Por que usar como serviço? Hoje vou responder essas e outras perguntas.

Fala galera, agradeço sua visita em meu Blog e espero poder ajudar com o post de hoje, esse é o primeiro de uma sequência de posts relacionado ao kubernetes.

Pessol, o que é Kubernetes? 

O Kubernetes é uma solução Open-Source para orquestração de contêineres e oferece uma plataforma confiável e escalável para executar grandes cargas de trabalho, projetado pelo Google e lançado em 07/06/2014 e atualmente mantido por Cloud Native Computing Foundation, o site oficial do projeto é kubernetes.io.

O Kubernetes com pronúncia “Koo-ber-net-ees” também é conhecido como “k8s” ou “k-eights“.

Arquitetura Kubernetes:

Arquitetura Kubernetes blog do Luiz Pessol

O kubernetes é composto por diversos componentes e aqui vamos abordar alguns desses itens, vamos tentar explicar a função de cada um deles.

Master:

Uma ou mais máquinas que controla os Nodes do Kubernetes, É dela que se origina todas as tarefas atribuídas aos Nodes.

Node:

São máquinas que recebem as tarefas e atribuições originadas dos Masters, são os Nodes que disponibilizam recursos computacionais para os PODs.

Pod:

Grupo de um ou mais contêineres implantado em um Node, Os contêineres agrupados em um Pod compartilham dos recursos como IP, host name e outros recursos, Pods separam a rede do armazenamento dos contêineres facilitando a movimentação dos contêineres no Cluster.

API Server:

É o frontend e trata requisições de API, principal componente de gerenciamento do cluster kubernetes.

Etcd:

É o banco de dados no qual o kubernetes armazena todas as informações: Nodes existentes, recursos que estão no cluster, assim por diante.

Controller Manager:

O Controller Manger gerencia vários controladores do Kubernetes. Cada controlador tem suas próprias responsabilidades, um exemplo é o Node-controller e ele é responsável por monitorar o status dos Nodes e executar as ações necessárias para manter um aplicativo em execução.

Scheduler:

De forma macro o Scheduler é o responsável por decidir qual POD continua em cada Node do cluster, vale lembrar que ele apenas decide e o responsável por alocar os PODs em cada Node é o kubelet.

Kube proxy:

Cada Node em um cluster de kubernetes executa um Kube-proxy que efetua discovery e para cada novo serviço cria regras apropriadas em cada Node para encaminhar o tráfego dos serviços para os Pods de back-end, de forma resumida ele é responsável pela comunicação entre os Pods mesmo que em um Node diferente.

Kubelet:

Imagine o kubelet como um capitão do navio, ele registra o Node no cluster kubernetes, recebe instruções para implantar novos Pods e novos Nodes, monitora o estado dos Pods, contêineres e reporta ao kube-api.

Por que usar Kubernetes?

Manter um ambiente com contêineres pode ser ainda mais complexo caso você não utilize um orquestrador, com a popularização dos microservices temos cada vez mais aplicações modernas que estão em constante evolução. O kubernetes fornece facilidade para implantação, gerenciamento do ciclo de vida, escalabilidade e extensível.

Pode ser mais trabalhoso do que você imagina!

Implementar e configurar um cluster de kubernetes pode exigir o máximo de recursos quanto a pessoas, habilidades, arquitetura, manutenção e resolução de problemas que certamente você vai ter. Configurar um cluster kubernetes pode ser simples, mas há um longo caminho até um cluster estar pronto para produção. Caso você ainda insista leve em consideração:

  • Alta disponibilidade para o Master;
  • Alta disponibilidade para Nodes;
  • Escalabilidade dos cluster;
  • Configuração do cluster de modo seguro, Comunicação TLS certificados, controle de usuário e permissões;
  • Segurança dos componentes, API do cluster por exemplo;
  • Boas práticas do Kubernetes aplicada;
  • Nodes do cluster possui gerenciamento de configuração;
  • Backup dos dados do cluster;
  • Manutenção ao longo do tempo, atualizações e políticas.

O que é Kubernetes? Por que usar como serviço?

Pessol, por que devo usar Kubernetes como serviço?

Serviços gerenciados vai te livrar de quase todo trabalho bruto, criação e configuração de todo o cluster e seus componentes. Um serviço gerenciado significa que você vai pagar alguém (Exemplo: GCP, Azure e AWS) para executar o cluster para você, assim você pode focar no seu negócio.

Atualmente muito dos provedores de Public Cloud já oferecem o Kubernetes como serviço o que para mim é um commodity e isso é maravilhoso do ponto de vista que eu não preciso comprar infraestrutura, configurar e garantir a disponibilidade do cluster.

Google Cloud: O primeiro a oferecer o serviço como Google Kubernetes Engine, conhecido também como GKE.

Microsoft Azure: Tem a oferta do Azure Kubernetes Services conhecido também como AKS.

Amazon Web Services: A AWS chegou com um certo atraso mas agora oferta ao mercado o Amazon Elastic Kubernetes Service ou Amazon EKS.

Atualmente muitos outros provedores já possui uma oferta do Kubernetes como serviço o que pode variar é a disponibilidade em algumas das regiões.

Quero deixar aqui algumas sugestões de livros e a própria documentação que por si só é fantástica:

Documentação Kuberentes: https://kubernetes.io/docs/home/

Livros: Kubernetes básico, Padrões para Kubernetes e DevOps Nativo de Nuvem com Kubernetes.

Vídeo sobre AKS: AKS – Azure Kubernetes Services

Nos próximos dias volto ensinando a subir um kubernetes como serviço, penso em fazer também WEBCAST sobre o tema o que acha? Deixe sua opinião nos comentários e caso queira saber em primeira mão acompanhe meu grupo no telegram clicando AQUI.

Não deixe de ler nosso último post AQUI, nele falamos sobre FinOps.

Espero que eu tenha ajudado de alguma forma, um forte abraço e até a próxima!!!

[];

4 comentários em “O que é Kubernetes? Por que usar como serviço?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *