O que é o Kubernetes?

Autores

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Definição de Kubernetes

O Kubernetes, também conhecido como k8s ou kube, é uma plataforma de orquestração de contêineres de código aberto para agendar e automatizar a implementação, o gerenciamento e o dimensionamento de aplicações conteinerizadas.

Atualmente, o Kubernetes e o ecossistema mais amplo de tecnologias relacionadas a contêineres se fundiram para formar os blocos de construção da infraestrutura de nuvem moderna. Esse ecossistema permite que as organizações ofereçam um ambiente de computação multinuvem híbrida altamente produtivo para realizar tarefas complexas relacionadas à infraestrutura e às operações. Ele também é compatível com o desenvolvimento nativo da nuvem ao permitir uma abordagem de construir uma vez e implementar em qualquer lugar para construir aplicações.

A palavra Kubernetes é originária do grego e significa timoneiro ou piloto, daí o helm no logotipo do Kubernetes.

Contexto: contêineres, Docker e Kubernetes

O que são contêineres?

Os contêineres são componentes de aplicações leves e executáveis que combinam o código-fonte com todas as bibliotecas do sistema operacional (SO) e as dependências necessárias para executar o código em qualquer ambiente.

Os contêineres aproveitam uma forma de virtualização do SO que permite que várias aplicações compartilhem uma única instância de um SO, isolando processos e controlando a quantidade de CPU, memória e disco que esses processos podem acessar. Como são menores, mais eficientes em termos de recursos e com maior portabilidade do que as máquinas virtuais (VMs), os contêineres se tornaram as unidades de computação de facto das modernas aplicações nativas da nuvem. Os contêineres também são mais eficientes em termos de recursos. Eles permitem que você execute mais aplicações em menos máquinas (virtual servers e servidores físicos) com menos instâncias do SO.

Como os contêineres podem ser executados de forma consistente em qualquer lugar, eles se tornaram críticos para a arquitetura subjacente compatível com ambientes de multinuvem híbrida, a combinação de ambientes no local, de nuvem privada, nuvem pública  e mais de um serviço de nuvem de mais de um fornecedor de nuvem.

O que é Docker?

O Docker é a ferramenta mais popular para criar e executar contêineres Linux. Embora formas iniciais de contêineres tenham sido introduzidas décadas atrás (com tecnologias como FreeBSD Jails e AIX Workload Partitions), os contêineres foram popularizados em 2013 quando o Docker os trouxe para as massas com uma nova implementação fácil de usar por desenvolvedores e compatível com a nuvem.

O Docker começou como um projeto de código aberto, mas hoje também se refere à Docker Inc., a empresa que desenvolve o Docker — um toolkit de contêineres comercial que se baseia no projeto de código aberto (e contribui com essas melhorias de volta para a comunidade de código aberto).

O Docker foi desenvolvido com base na tecnologia tradicional de contêineres do Linux, mas permite uma virtualização mais granular dos processos do kernel do Linux e adiciona funcionalidades para tornar os contêineres mais acessíveis para os desenvolvedores construírem, implementarem, gerenciarem e protegerem.

Embora existam hoje plataformas alternativas de tempo de execução de contêineres, como Open Container Initiative (OCI), CoreOS e Canonical (Ubuntu) LXD, o Docker é a escolha dominante. Além disso, o Docker se tornou sinônimo de contêineres e às vezes é confundido como concorrente de tecnologias complementares como o Kubernetes

Hoje, Docker e Kubernetes são as principais ferramentas de conteinerização, com o Docker dominando 82% do mercado, e o Kubernetes controlando 11,52% de participação de mercado em 2024.

Orquestração de contêineres com Kubernetes

Com a proliferação dos contêineres, hoje, uma organização pode ter centenas ou milhares de contêineres. As equipes de operações são necessárias para agendar e automatizar a implementação de contêineresrede, escalabilidade e disponibilidade. Entre na orquestração de contêineres.

Com base no Borg, plataforma interna de orquestração de contêineres do Google, o Kubernetes foi lançado ao público como uma ferramenta de código aberto em 2014, com a Microsoft, a Red Hat, a IBM e outros grandes players de tecnologia se tornando os primeiros membros da comunidade Kubernetes. Em 2015, o Google doou o Kubernetes à Cloud Native Computing Foundation (CNCF), o hub de computação nativo da nuvem de código aberto e independente de fornecedores.

O Kubernetes se tornou o primeiro projeto hospedado da CNCF em março de 2016. Desde então, o Kubernetes tornou-se a ferramenta de orquestração de contêineres mais usada para executar cargas de trabalho baseadas em contêineres em todo o mundo. Em um relatório da CNCF, o Kubernetes é o segundo maior projeto de código aberto do mundo (depois do Linux) e a principal ferramenta de orquestração de contêineres de 71% das empresas no ranking Fortune 100.

Em 2018, o Kubernetes foi o primeiro projeto graduado da CNCF, tornando-se um dos projetos de código aberto que mais crescem na história. Enquanto outras opções de orquestração de contêineres, principalmente o Docker Swarm e Apache Mesos, ganharam força no início, o Kubernetes rapidamente se tornou o mais amplamente adotado.

Desde que o Kubernetes ingressou na CNCF, em 2016, o número de colaboradores cresceu para 8.012, um aumento de 996%. Até o momento, os colaboradores já adicionaram mais de 123 mil commits ao repositório do Kubernetes no GitHub.

As mais recentes notícias de tecnologia, corroboradas por insights de especialistas.

Mantenha-se atualizado sobre as tendências mais importantes (e intrigantes) do setor em IA, automação, dados e muito mais com o boletim informativo Think. Consulte a Declaração de privacidade da IBM.

Agradecemos sua inscrição!

Sua assinatura será entregue em inglês. Você pode encontrar um link para cancelar a assinatura em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

O que o Kubernetes faz?

O Kubernetes agenda e automatiza tarefas relacionadas a contêineres durante todo o ciclo de vida das aplicações, incluindo as seguintes.

Implementação

Implementar um número específico de contêineres em um host específico e mantê-los em execução no estado desejado.

Implementações

Um lançamento é uma alteração em uma implementação. O Kubernetes permite iniciar, pausar, retomar ou reverter lançamentos.

Descoberta de serviços

O Kubernetes pode expor automaticamente um contêiner à internet ou a outros contêineres usando um nome ou endereço IP do sistema de DNS .

Armazenamento provisionamento

Defina o Kubernetes para montar armazenamento local persistente ou em nuvem para contêineres, conforme a necessidade.

Balanceamento de Carga

Com base no uso da CPU ou métricas personalizadas, o balanceamento de cargas do Kubernetes pode distribuir a carga de trabalho em toda a rede para manter o desempenho e a estabilidade.

Ajuste automático de escala

Quando o tráfego aumenta, o escalonamento automático do Kubernetes pode criar novos clusters conforme a necessidade para lidar com a carga de trabalho adicional.

Autocorreção para alta disponibilidade.

Quando um contêiner falha, o Kubernetes pode reiniciá-lo ou substituí-lo automaticamente para evitar o downtime. Ele também pode derrubar contêineres que não atendem a seus requisitos de verificação de integridade.

OpenShift 

Veja como os contêineres são executados na nuvem com o OpenShift

Os contêineres facilitam a construção, a execução e a migração de aplicações entre diferentes ambientes. Este vídeo mostra como o OpenShift on IBM Cloud ajuda as equipes a gerenciar aplicações conteinerizadas de forma eficiente, tornando o desenvolvimento em nuvem mais rápido e confiável.

Arquitetura e componentes do Kubernetes

A implementação do Kubernetes envolve clusters, os blocos de construção da arquitetura do Kubernetes. Os clusters são compostos por nós, cada um representando um único host de computação, seja uma máquina física (bare metal server) ou uma VM.

A arquitetura do Kubernetes consiste em duas partes principais: os componentes do painel de controle e os componentes que gerenciam nós individuais.

Um nó consiste de pods. São grupos de contêineres que compartilham os mesmos recursos de computação e a mesma rede. Também são a unidade de escalabilidade no Kubernetes. Se um contêiner em um pod estiver ganhando mais tráfego do que pode lidar, o Kubernetes replicará o pod em outros nós no cluster.

O plano de controle lida automaticamente com o agendamento dos pods nos nós em um cluster.

Componentes do plano de controle

Cada cluster tem um nó mestre que manipula o plano de controle do cluster. O nó mestre executa um serviço de agendador que automatiza quando e onde os contêineres são implementados com base nos requisitos de implementação do conjunto de desenvolvedores e na capacidade de computação disponível.

Os principais componentes de um cluster do Kubernetes são o kube-apiserver, etcd, kube-scheduler, kube-controller-manager e cloud-controller-manager:

apiserver:
 o servidor de interface de programação de aplicativos (API) no Kubernetes expõe a API do Kubernetes (a interface usada para gerenciar, criar e configurar clusters do Kubernetes) e serve como ponto de entrada para todos os comandos e consultas.

etcd:
o etcd é um armazenamento de chave-valor distribuído de código aberto usado para manter e gerenciar as informações críticas das quais os sistemas distribuídos precisam para continuar funcionando. No Kubernetes, o etcd gerencia os dados de configuração, dados de estado e metadados.

scheduler: 
esse componente rastreia pods recém-criados e seleciona nós para eles serem executados. O scheduler considera a disponibilidade de recursos e restrições de alocação, requisitos de hardware e software e muito mais.

controller-manager: 
um conjunto de controladores integrados, o controller-manager do Kubernetes executa um loop de controle que monitora o estado compartilhado do cluster e se comunica com o servidor de API para gerenciar recursos, pods ou endpoints de serviço. O controller-manager consiste em processos separados que são agrupados para reduzir a complexidade e executados em um único processo.

cloud-controller-manager: 
esse componente tem função semelhante à do link controller-manager. Ele se vincula à API de um provedor de nuvem e separa os componentes que interagem com essa plataforma de nuvem daqueles que apenas interagem dentro do cluster.

Componentes dos nós

Os nós do trabalhador são responsáveis por implementar, executar e gerenciar aplicações em contêineres:

Kubelet:
o Kubelet é um agente de software que recebe e executa pedidos do nó principal e ajuda a garantir que os contêineres sejam executados em um pod.

Kube-proxy:
instalado em todos os nós em um cluster, o kube-proxy mantém as regras de rede no host e monitora as alterações nos serviços e pods.

Outros conceitos e terminologia do Kubernetes

  • ReplicaSet: um ReplicaSet mantém um conjunto estável de pods de réplica para cargas de trabalho específicas.

  • Implementação: a implementação controla a criação e o estado da aplicação conteinerizada e a mantém em execução. Especifica quantas réplicas de um pod devem ser executadas no cluster. Se um pod falhar, a implementação criará um novo.

  • Kubectl: desenvolvedores gerenciam as operações do cluster usando o kubectl, uma ferramenta de desenvolvedor que consiste em uma interface de linha de comando (CLI) que se comunica diretamente com a API do Kubernetes.

  • DaemonSets: os DaemonSets são responsáveis por ajudar a garantir que um pod seja criado em cada nó do cluster.

  • Complementos: os complementos do Kubernetes estendem as funções e incluem Cluster DNS (um servidor DNS que fornece registros DNS para o cluster), Web IU (um dashboard Kubernetes para gerenciar um cluster) e muito mais.

  • Service: um Kubernetes Service é uma camada de abstração que define um conjunto lógico de pods e como acessá-los. Um serviço expõe uma aplicação de rede em execução em um ou mais pods em um cluster. Fornece uma maneira abstrata de balancear a carga de pods.

O ecossistema do Kubernetes

Atualmente, há mais de 90 ofertas certificadas do Kubernetes, incluindo plataformas de gerenciamento de nível empresarial que fornecem ferramentas, atualizações e recursos complementares que aceleram o desenvolvimento e a entrega de aplicações conteinerizadas.

Kubernetes Services gerenciados

Embora o Kubernetes seja a tecnologia de orquestração preferida para aplicações na nuvem baseadas em contêineres, ele depende de outros componentes, que vão desde rede, entrada, balanceamento de carga, armazenamento, integração contínua e entrega contínua (CI/CD) e muito mais, para ser totalmente funcional.

Embora a auto-hospedagem de um cluster do Kubernetes em um ambiente baseado em nuvem seja possível, a configuração e o gerenciamento podem ser complexos para uma organização empresarial. É aqui que entram os Kubernetes Services gerenciados.

Com os Kubernetes Services gerenciados, o provedor normalmente gerencia os componentes do plano de controle do Kubernetes. O provedor de serviços gerenciados ajuda a automatizar processos de rotina para atualizações, balanceamento de carga, escalonamento e monitoramento. Por exemplo, o Red Hat OpenShift é um Kubernetes Service que pode ser implementado em qualquer ambiente e em todas as principais nuvens públicas, incluindo Amazon Web Services (AWS), Microsoft Azure, Google Cloud e IBM Cloud. Muitos provedores de nuvem também oferecem seus próprios Kubernetes Services gerenciados.

Ferramentas de monitoramento do Kubernetes

O monitoramento do Kubernetes refere-se à coleta e análise de dados relacionados às características de integridade, desempenho e custo de aplicações conteinerizadas executadas dentro de um cluster do Kubernetes.

O monitoramento de clusters do Kubernetes permite que administradores e usuários acompanhem o tempo de atividade, o uso de recursos dos clusters e a interação entre os componentes dos clusters. O monitoramento ajuda a identificar rapidamente problemas como recursos insuficientes, falhas e nós que não podem ingressar no cluster. As soluções de monitoramento do Kubernetes atuais incluem ferramentas automatizadas para gerenciamento de desempenho de aplicações (APM), observabilidade, gerenciamento de recursos de aplicações (ARM) e muito mais.

Malha de serviço Istio

O Kubernetes pode implementar e dimensionar pods, mas não pode gerenciar ou automatizar o roteamento entre eles e não fornece nenhuma ferramenta para monitorar, proteger ou depurar essas conexões.

Conforme o número de contêineres em um cluster aumenta, o número de possíveis caminhos de conexão entre eles aumenta exponencialmente. Por exemplo, dois contêineres têm duas conexões em potencial, mas 10 pods têm 90, criando um possível pesadelo de configuração e gerenciamento.

O Istio, uma camada de malha de serviço configurável e de código aberto, fornece uma solução ao conectar, monitorar e proteger contêineres em um cluster do Kubernetes. Outros benefícios significativos incluem recursos para depuração aprimorada e um dashboard que equipes de DevOps e administradores podem usar para monitorar a latência, erros no tempo de serviço e outras características das conexões entre contêineres.

Computação nativa e serverless

O Knative (pronuncia-se "kay-native") é uma plataforma de código aberto que fornece um acesso fácil à computação sem servidor, o modelo de desenvolvimento e execução de aplicações de computação em nuvem, que permite aos desenvolvedores criar e executar código de aplicações sem provisionar ou gerenciar servidores ou infraestrutura de back-end.

Em vez de implementar uma instância contínua de código que fica inativa enquanto espera por solicitações, o serverless abre o código conforme a necessidade, escalando-o para cima ou para baixo conforme a demanda flutua e, então, desativa o código quando não está em uso. A computação sem servidor evita o desperdício de capacidade e poder de computação e reduz os custos, porque você só paga para executar o código quando ele estiver em execução.

Tekton

O Tekton é um framework de código aberto e independente de fornecedor para criar sistemas contínuos de integração e entrega (CI/CD) governados pela Continuous Delivery Foundation (CDF).

Como um framework do Kubernetes, o Tekton ajuda a modernizar a entrega contínua ao fornecer especificações do setor para pipelines, fluxos de trabalho e outros blocos de construção, tornando a implementação em vários provedores de nuvem ou ambientes híbridos mais rápida e fácil.

Vale a pena observar que o Tekton é o sucessor do Knative Build, que ainda é compatível com algumas distribuições do Knative. Os pipelines do Tekton se tornaram o padrão para construir imagens de contêineres e implementar em um container registry em um ambiente Kubernetes.

Casos de uso do Kubernetes

As organizações empresariais usam o Kubernetes para apoiar os seguintes casos de uso que desempenham um papel crucial na criação de uma infraestrutura de TI moderna.

Arquitetura de microsserviços ou desenvolvimento nativo da nuvem

Nativo da nuvem é uma abordagem de desenvolvimento de software para construir, implementar e gerenciar aplicações baseadas em nuvem. O principal benefício do nativo da nuvem é que ele permite que DevOps e outras equipes codifiquem uma vez e implementem em qualquer infraestrutura de nuvem de qualquer provedor de serviço de nuvem.

Esse processo de desenvolvimento moderno depende dos microsserviços, uma abordagem em que uma única aplicação é composta por muitos componentes ou serviços menores fracamente acoplados e independentemente implementáveis, que são implementados em contêineres gerenciados pelo Kubernetes.

O Kubernetes ajuda a garantir que cada microsserviço tenha os recursos necessários para ser executado de forma eficaz, ao mesmo tempo em que minimiza a sobrecarga operacional associada ao gerenciamento manual de vários contêineres.

Ambientes de multinuvem híbrida

A nuvem híbrida combina e unifica a nuvem pública, a nuvem privada e a infraestrutura de data center local para criar uma infraestrutura de TI única, flexível e econômica.

Atualmente, a nuvem híbrida se fundiu com serviços de nuvem pública e multinuvem de mais de um fornecedor de nuvem, para criar um ambiente de multinuvem híbrido.

Uma abordagem de multinuvem híbrida cria maior flexibilidade e reduz a dependência de uma organização de um fornecedor, evitando o lock-in com fornecedor. Como o Kubernetes cria a base para o desenvolvimento nativo da nuvem, ele é fundamental para a adoção da multinuvem híbrida.

Aplicações em escala

O Kubernetes é compatível com a implementação de aplicativos na nuvem em grande escala com escalonamento automático. Esse processo permite que as aplicações escalem para cima ou para baixo, ajustando-se automaticamente às mudanças de demanda, com velocidade, eficiência e downtime mínimo.

A escalabilidade elástica da implementação do Kubernetes significa que recursos podem ser adicionados ou removidos com base nas mudanças no tráfego de usuários, como vendas relâmpago em sites de varejo.

Modernização de aplicativos

O Kubernetes fornece a plataforma de nuvem necessária para compatibilidade com a modernização de aplicações, migrando e transformando aplicações legadas em aplicações de nuvem construídas com a arquitetura de microsserviços.

Práticas de DevOps

A automação está no núcleo do DevOps, que acelera a entrega de software de maior qualidade, combinando e automatizando o trabalho das equipes de desenvolvimento de software e operações de TI.

O Kubernetes ajuda as equipes de DevOps a criar e atualizar aplicativos rapidamente, ao automatizar a configuração e a implementação de aplicações.

Inteligência artificial (IA) e aprendizado de máquina (ML)

Os modelos de ML e os grandes modelos de linguagem (LLMs) compatíveis com a IA incluem componentes que, separadamente, seriam difíceis e demorados de gerenciar. Ao automatizar configuração, implementação e escalabilidade em ambientes de nuvem, o Kubernetes ajuda a fornecer a agilidade e a flexibilidade necessárias para treinar, testar e implementar esses modelos complexos.

Tutoriais do Kubernetes

Se você está pronto para começar a trabalhar com o Kubernetes ou está procurando desenvolver suas habilidades com o Kubernetes e as ferramentas do ecossistema do Kubernetes, experimente um destes tutoriais:

Soluções relacionadas
IBM Red Hat OpenShift

O Red Hat OpenShift on IBM Cloud é uma plataforma de contêineres OpenShift (OCP) totalmente gerenciada.

Explore o Red Hat OpenShift
Soluções de contêiner

As soluções de contêineres executam e escalam cargas de trabalho conteinerizadas com segurança, inovação de código aberto e implementação rápida.

Explore contêineres
Serviços de consultoria em nuvem 

Libere novos recursos e aumente a agilidade dos negócios com os serviços de consultoria em nuvem da IBM. Descubra como cocriar soluções, acelerar a transformação digital e otimizar o desempenho por meio de estratégias de nuvem híbrida e parcerias especializadas.

Serviço de nuvem
Dê o próximo passo

Modernize sua infraestrutura com as soluções de contêineres da IBM. Execute, escale e gerencie cargas de trabalho conteinerizadas em todos os ambientes com flexibilidade, segurança e eficiência usando a abrangente plataforma de contêineres da IBM.

Explore soluções de contêineres Crie sua conta gratuita na IBM Cloud