O que é Kubernetes?

Muitas vezes descrito como o "sistema operacional para a nuvem", o Kubernetes é uma plataforma de código aberto para gerenciar clusters de aplicativos e serviços em contêineres. Desenvolvido pelos engenheiros da Google Joe Beda, Brendan Burns e Craig McLuckie em 2014, e com código aberto logo depois, o Kubernetes logo se tornou um ecossistema nativo da nuvem próspero por direito próprio. Hoje, o Kubernetes, que significa "timoneiro" ou "piloto" em grego antigo, é gerenciado pela Cloud Native Computing Foundation (CNCF), um ramo da Fundação Linux.

O Kubernetes foi o primeiro projeto graduado da CNCF e se tornou um dos projetos de código aberto de crescimento mais rápido da história. O Kubernetes agora tem mais de 2.300 colaboradores e foi amplamente adotado por empresas grandes e pequenas, incluindo metade da Fortune 100.

Kubernetes 101—Principais termos

Para começar, aqui estão alguns termos-chave relacionados ao Kubernetes. Há uma lista mais completa disponível na página do Glossário Padronizado do Kubernetes. Você também pode consultar a Referência Rápida do Kubernetes, que contém uma lista de comandos e sinalizadores kubectl comumente usados.

Cluster

Um conjunto de máquinas individualmente referidas como nós, usados para executar aplicativos em contêiner gerenciados pelo Kubernetes.

Uma máquina virtual ou física. Um cluster consiste em um nó principal e vários nós de trabalho.

Contêiner de nuvem

Uma imagem que contém o software e suas dependências.

Pod

Um único contêiner ou um conjunto de contêineres em execução no cluster do Kubernetes.

Implementação

Um objeto que gerencia aplicativos replicados representados por pods. Os pods são implantados nos nós de um cluster.

Replicaset

Garante que um número especificado de réplicas de pod esteja em execução ao mesmo tempo.

Serviço

Descreve como acessar aplicativos representados por um conjunto de pods. Os serviços geralmente descrevem portas e balanceadores de carga e podem ser usados para controlar o acesso interno e externo a um cluster.

O que é KubeCon?

KubeCon é a conferência anual para desenvolvedores e usuários do Kubernetes. Desde a primeira KubeCon em 2015 com 500 participantes, a KubeCon cresceu e se tornou um evento importante para a comunidade nativa da nuvem. Em 2019, a edição da KubeCon de San Diego, Califórnia, atraiu 12.000 desenvolvedores e engenheiros de confiabilidade de site que estavam comemorando o florescimento do ecossistema de código aberto em torno da plataforma de orquestração em nuvem Kubernetes.

O que são contêineres do Kubernetes?

À medida que os desenvolvedores cada vez mais implantam software para um conjunto diversificado de ambientes de computação com diferentes nuvens, ambientes de teste, laptops, dispositivos, sistemas operacionais e plataformas, a questão de fazer o software funcionar de maneira confiável é de suma importância. É aí que entram os contêineres: eles agrupam um aplicativo com todo o seu ambiente de tempo de execução. Nesse sentido, os contêineres são uma forma de virtualização porque fornecem uma "bolha" na qual o aplicativo pode ser executado incluindo as bibliotecas, dependências e sistemas operacionais corretos. Mas os contêineres são menores do que as máquinas virtuais porque contêm apenas os recursos de que o aplicativo precisa e nada mais.

Kubernetes vs Docker

Embora os contêineres Linux existam desde 2008, levou o surgimento de contêineres Docker em 2013 para torná-los famosos. Da mesma forma, a explosão de interesse em implementar aplicativos em contêineres , aplicativos que continham tudo o que eles precisavam para executar, acabou criando um novo problema: gerenciar milhares de contêineres. O Kubernetes orquestra automaticamente o ciclo de vida do contêiner, distribuindo os contêineres pela infraestrutura de hospedagem. O Kubernetes aumenta ou diminui os recursos, dependendo da demanda. Ele provisiona, agenda, exclui e monitora a integridade dos contêineres.

Quais são os componentes do Kubernetes?

Os principais componentes do Kubernetes são clusters, nós e o plano de controle. Os clusters contêm nós. Cada nó compreende um conjunto de pelo menos uma máquina operária. Os nós hospedam pods que contêm elementos do aplicativo implantado. O plano de controle gerencia nós e pods no cluster, geralmente em muitos computadores, para alta disponibilidade.

O que é Kubernetes

O plano de controle contém o seguinte:

  • Servidor de API do Kubernetes: fornece a interface de programação (API) para controlar o Kubernetes
  • etcd: um armazenamento de valor-chave para dados de cluster
  • Programador do Kubernetes: combina novos pods com nós disponíveis
  • Kubernetes-controller-manager: executa uma série de processos para gerenciar falha de nós, replicação de controle, juntar serviços e pods via endpoints e controlar contas e tokens de acesso
  • Cloud-controller-manager: ajuda a gerenciar APIs de provedores de nuvem específicos em torno de aspectos como rotas de infraestrutura específicas e balanceamento de carga

Os componentes do nó incluem:

  • kubelet: um agente que verifica se os contêineres estão sendo executados em um pod
  • Proxy de rede do Kubernetes: mantém regras de rede
  • Docker, containerd ou outro tipo de tempo de execução do contêiner

Quais são os benefícios do Kubernetes?

Com os contêineres, você pode ter certeza de que seus aplicativos vêm com tudo o que precisam para serem executados. Mas, à medida que você adiciona contêineres, que geralmente contêm microsserviços, você pode gerenciá-los e distribuí-los automaticamente usando Kubernetes.

Com o Kubernetes, as organizações podem:

Escalar automaticamente Aumentar ou diminuir implantações, dependendo da demanda.
Descobrir serviços Encontrar serviços em contêineres por meio do DNS ou do endereço IP.
Balancear cargas Estabilizar a implementação distribuindo o tráfego de rede.
Gerenciar armazenamento Escolher armazenamento local ou em nuvem.
Controlar versões Escolha os tipos de contêineres que deseja executar e quais substituir usando uma nova imagem ou recursos de contêiner.
Mantenha a segurança Atualize com segurança senhas, tokens OAuth e chaves SSH relacionadas a imagens de contêiner específicas.

Quais são os desafios de usar o Kubernetes?

Embora o Kubernetes seja altamente combinável e possa suportar qualquer tipo de aplicação, pode ser difícil entendê-lo e usá-lo. O Kubernetes nem sempre é a solução correta para uma determinada carga de trabalho, como vários membros da CNCF comentaram. É por isso que o ecossistema Kubernetes contém uma série de ferramentas nativas de nuvem relacionadas que as organizações criaram para resolver problemas específicos de carga de trabalho.

O Kubernetes implanta contêineres, não código-fonte, e não cria aplicativos. Para registro, middleware, monitoramento, configuração, CI/CD e muitas outras atividades de produção, você precisará de ferramentas adicionais. Dito isso, o Kubernetes é extensível e provou ser adepto para uma ampla variedade de casos de uso, desde aviões a jato até aprendizado de máquina. Na verdade, os fornecedores de nuvem, incluindo Oracle, Google, Amazon Web Services, e outros, usaram a própria extensibilidade do Kubernetes para construir Kubernetes gerenciado, que são serviços que reduzem a complexidade e aumentam a produtividade do desenvolvedor.

O que é Kubernetes gerenciado?

O Cloud Native e o Kubernetes transformam a forma como o AgroScout oferece suporte aos framers.

Nosso Cloud InfrastructureKubernetes Engine é um serviço gerenciado fácil de usar para o desenvolvedor que pode ser usado para implementar aplicações conteinerizadas na nuvem. Use o Kubernetes Engine quando sua equipe de desenvolvimento quiser criar, implementar e gerenciar aplicativos nativos em nuvem de maneira confiável. Você especifica os recursos de computação necessários para as suas aplicações e o Kubernetes Engine os provisiona em uma tenancy existente da Cloud Infrastructure.

Embora você não precise usar um serviço Kubernetes gerenciado na Cloud Infrastructure, o Kubernetes Engine é uma maneira fácil de executar clusters altamente disponíveis com o controle, a segurança e o desempenho previsíveis da Oracle Cloud Infrastructure. O Kubernetes Engine oferece aceita bare metal e máquinas virtuais como nós e é certificado como em conformidade pela CNCF. Você também obtém todas as atualizações do Kubernetes e permanece compatível com o ecossistema da CNCF sem nenhum trabalho extra de sua parte.


O ecossistema e a comunidade Kubernetes

A Oracle é membro Platinum da Cloud Native Computing Foundation (CNCF), uma comunidade de código aberto que oferece suporte a várias dezenas de projetos de desenvolvimento de software organizados por nível de maturidade. Os projetos graduados (Kubernetes, Prometheus, Envoy, CoreDNS, containerd, Fluentd, Jaeger, Vitess, TUF e Helm) têm se mostrado inestimáveis para aspectos de desenvolvimento nativo em nuvem.

Como começar com o Kubernetes

O Kubernetes tem um grande ecossistema de suporte a projetos que surgiram em torno dele. A paisagem pode ser assustadora e procurar respostas para perguntas simples pode levar você à toca do coelho. Mas os primeiros passos neste caminho são simples e, a partir daí, você pode explorar conceitos avançados de acordo com suas necessidades. Saiba como:

  • Configurar um ambiente de desenvolvimento local com Docker e Kubernetes
  • Criar um microsserviço Java simples com Helidon
  • Criar o microsserviço em uma imagem de contêiner com Docker
  • Implantar o microsserviço em um cluster do Kubernetes local
  • Dimensionar o microsserviço para cima e para baixo no cluster

Kubernetes para desenvolvedores

Os desenvolvedores que estão ansiosos para iniciar o primeiro projeto de Kubernetes podem consultar o portal do desenvolvedor, onde podem aprender a criar o primeiro aplicativo Arm no Kubernetes ou implantar um cluster do Kubernetes usando o Cloud Shell.


Introdução ao Kubernetes no OCI (8:32)