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.
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.
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.
Uma imagem que contém o software e suas dependências.
Um único contêiner ou um conjunto de contêineres em execução no cluster do Kubernetes.
Um objeto que gerencia aplicativos replicados representados por pods. Os pods são implantados nos nós de um cluster.
Garante que um número especificado de réplicas de pod esteja em execução ao mesmo tempo.
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.
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.
À 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.
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.
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 plano de controle contém o seguinte:
Os componentes do nó incluem:
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. |
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.
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.
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.
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:
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.