O Kubernetes, a plataforma de orquestração de contêineres de código aberto mais popular do mundo, é considerado um marco importante na história das tecnologias nativas da nuvem. Desenvolvido internamente no Google e liberado para o público em 2014, o Kubernetes permitiu que as organizações se afastassem da infraestrutura de TI tradicional e se aproximassem da automação de tarefas operacionais vinculadas à implementação, escalabilidade e gerenciamento de aplicações em contêineres (ou microsserviços). Embora o Kubernetes tenha se tornado o padrão para o gerenciamento de contêineres, muitas empresas também usam a tecnologia para uma gama mais ampla de casos de uso.
Os contêineres– unidades leves de software que empacotam o código e todas as suas dependências para serem executados em qualquer ambiente – formam a base do Kubernetes e são de missão crítica para microsserviços modernos, softwares nativos da nuvem e fluxos de trabalho de DevOps.
O Docker foi a primeira ferramenta de software de código aberto a popularizar a criação, a implementação e o gerenciamento de aplicações em contêineres. Mas o Docker não tinha uma ferramenta de "orquestração" automatizada, o que tornava demorado e complexo para as equipes de ciência de dados escalarem as aplicações. O Kubernetes, também conhecido como K8s, foi criado especificamente para enfrentar esses desafios, automatizando o gerenciamento de aplicações em contêineres.
Em termos gerais, a plataforma de orquestração do Kubernetes é executada por meio de contêineres com pods (link externo ao site ibm.com) e nós. Um pod opera um ou mais contêineres Linux e pode ser executado em múltiplos para aumentar a escala e a resistência a falhas. Os nós executam os pods e geralmente são agrupados em um cluster Kubernetes, abstraindo os recursos de hardware físico subjacentes.
A infraestrutura declarativa e orientada por API do Kubernetes ajudou a liberar a equipe de DevOps e outras equipes dos processos conduzidos manualmente para que pudessem trabalhar de forma mais independente e eficiente para atingir suas metas. Em 2015, o Google doou o Kubernetes como tecnologia inicial para a Cloud Native Computing Foundation (CNCF) (link externo ao site ibm.com), o hub de computação nativa da nuvem de código aberto e independente de fornecedor.
Hoje, o Kubernetes é amplamente usado na produção para gerenciar o Docker e basicamente qualquer outro tipo de tempo de execução de contêiner. Embora o Docker inclua sua própria ferramenta de orquestração, chamada a, a maioria dos desenvolvedores escolhe o Kubernetes para a orquestração de contêineres.
Como um sistema de código aberto, os serviços do Kubernetes são compatíveis com todos os principais provedores de nuvem pública, incluindo IBM, Amazon Web Services (AWS), Microsoft Azure e Google. O Kubernetes também pode ser executado em servidores Bare Metal Server e máquinas virtuais (VMs) em nuvem privada, nuvem híbrida e configurações de edge, desde que o sistema operacional hospedeiro seja uma versão do Linux ou do Windows.
Veja um resumo dos seis principais casos de uso que demonstram como o Kubernetes está transformando a infraestrutura de TI.
Sites com muito tráfego e aplicações de computação em nuvem recebem milhões de solicitações de usuários todos os dias. Uma das principais vantagens do uso do Kubernetes para a implementação de aplicações em nuvem em larga escala é o escalonamento automático. Esse processo permite que as aplicações se ajustem de forma automática às mudanças na demanda, com velocidade, eficiência e downtime mínimo. Por exemplo, quando a demanda flutua, o Kubernetes permite que as aplicações sejam executadas de forma contínua e respondam às mudanças nos padrões de tráfego da web. Isso ajuda a manter a quantidade certa de recursos de carga de trabalho, sem provisionamento excessivo ou insuficiente .
O Kubernetes emprega o escalonamento automático de pod horizontal (HPA) (link externo ao site ibm.com) para realizar o balanceamento de carga (como para uso da CPU ou métricas personalizadas) dimensionando o número de réplicas de pod (clones que facilitam a autocorreção) relacionadas a uma implementação específica. Isso reduz possíveis problemas, como picos de tráfego, problemas de hardware ou interrupções de rede.
Observação: o HPA não deve ser confundido com o escalonamento automático de pod vertical (VPA) do Kubernetes, que atribui recursos adicionais, como memória ou CPU, aos pods que já estão em execução para a carga de trabalho.
Setores como governo, ciência, finanças e engenharia dependem fortemente da computação de alto desempenho (HPC), a tecnologia que processa big data para realizar cálculos complexos. A HPC usa processadores poderosos em velocidades extremamente altas para tomar decisões instantâneas baseadas em dados. Os usos reais da HPC incluem automatização da negociação de ações, previsão do tempo, sequenciamento de DNA e simulação de voo de aeronaves.
Os setores de HPC pesado usam o Kubernetes para gerenciar a distribuição dos cálculos de HPC em ambientes híbridos e multinuvem. O Kubernetes também pode servir como uma ferramenta flexível para suportar o processamento de trabalhos em lote envolvidos em cargas de trabalho de computação de alto desempenho, o que aumenta a portabilidade de dados e códigos .
A criação e a implementação de sistemas de inteligência artificial (IA) e aprendizado de máquina (ML) requerem grandes volumes de dados e processos complexos, como computação de alto desempenho e análise de big data. A implementação do aprendizado de máquina no Kubernetes facilita a automação do gerenciamento e do escalonamento dos ciclos de vida do ML e reduz a necessidade de intervenção manual.
Por exemplo, a plataforma de orquestração em contêineres Kubernetes pode automatizar partes dos fluxos de trabalho de manutenção preditiva de IA e ML, incluindo verificações de integridade e planejamento de recursos. E o Kubernetes pode aumentar ou diminuir as cargas de trabalho de ML para atender às demandas dos usuários, ajustar o uso de recursos e controlar custos.
O aprendizado de máquina depende de grandes modelos de linguagem para realizar processamento de linguagem natural (NLP) de alto nível, como classificação de texto, análise de sentimento e tradução automática, e o Kubernetes ajuda a acelerar a implementação de grandes modelos de linguagem para automatizar o processo de NLP. À medida que cada vez mais as organizações recorrem aos recursos da IA generativa, elas estão usando o Kubernetes para executar e escalar modelos de IA generativa, fornecendo alta disponibilidade e tolerância a falhas.
Em geral, o Kubernetes oferece a flexibilidade, a portabilidade e a escalabilidade necessárias para treinar, testar, agendar e implementar modelos de ML e de IA generativa.
Os microsserviços (ou arquitetura de microsserviços) oferecem uma abordagem moderna de arquitetura nativa da nuvem, em que cada aplicação é composta por vários componentes ou serviços menores vagamente conectados e implementáveis de forma independente. Por exemplo, grandes sites de comércio eletrônico de varejo consistem em muitos microsserviços. Normalmente, eles incluem um serviço de pedidos, um serviço de pagamento, um serviço de envio e um serviço de atendimento ao cliente. Cada serviço tem sua própria API REST, que os outros serviços usam para se comunicar com ela.
O Kubernetes foi projetado para lidar com a complexidade envolvida no gerenciamento de todos os componentes independentes executados simultaneamente dentro da arquitetura de microsserviços. Por exemplo, o recurso de alta disponibilidade (HA) integrado do Kubernetes garante operações contínuas mesmo em caso de falha. E o recurso de autocorreção do Kubernetes entra em ação se uma aplicação em contêiner ou um componente de aplicação falhar. O recurso de autocorreção pode reimplementar instantaneamente a aplicação ou componente da aplicação, de acordo com o estado desejado, o que ajuda a manter o tempo de atividade e a confiabilidade.
O Kubernetes foi desenvolvido para ser usado em qualquer lugar, facilitando a migração de aplicações no local para ambientes de nuvem híbrida e multinuvem para as organizações. O Kubernetes padroniza a migração, fornecendo aos desenvolvedores de software comandos integrados para a implementação eficaz da aplicação. O Kubernetes também pode implementar alterações nas aplicações e escalá-las para cima ou para baixo, dependendo dos requisitos do ambiente.
O Kubernetes oferece portabilidade entre ambientes locais e de nuvem, pois abstrai os detalhes da infraestrutura das aplicações. Isso elimina a necessidade de dependências de aplicações específicas da plataforma e facilita a migração das aplicações entre diferentes provedores de nuvem ou data centers com o mínimo de esforço.
Para as equipes corporativas de DevOps, ser capaz de atualizar e implementar as aplicações rapidamente é crítica para o sucesso dos negócios. O Kubernetes oferece às equipes o desenvolvimento e a manutenção do sistema de software para melhorar a agilidade geral. E a interface da API do Kubernetes permite que os desenvolvedores de software e outros stakeholders de DevOps visualizem, acessem, implementem, atualizem e otimizem facilmente seus ecossistemas de contêiner.
A CI/CD, que significa integração contínua (CI) e entrega contínua (CD), tornou-se um aspecto fundamental do desenvolvimento de software . No DevOps, a CI/CD simplifica a programação, o teste e a implementação da aplicação, fornecendo às equipes um único repositório para armazenar ferramentas de trabalho e de automação para combinar e testar o código de forma consistente e garantir que ele funcione. O Kubernetes desempenha um papel importante nos pipelines de CI/CD nativos da nuvem, automatizando a implementação de contêineres nos ambientes de infraestrutura de nuvem e garantindo o uso eficiente dos recursos.
O Kubernetes desempenha um papel crítico na infraestrutura de TI, como pode ser visto em seus muitos casos de uso orientados por valor que vão além da orquestração de contêineres. É por isso que tantas empresas continuam implementando o Kubernetes. Em uma pesquisa nativa da nuvem realizada em 2021 (link externo ao site ibm.com) realizada pela CNCF, o uso do Kubernetes atingiu seu ponto mais alto de todos os tempos, com 96% das organizações usando ou avaliando a plataforma conteinerizada. De acordo com o mesmo estudo, o uso de Kubernetes continua crescendo nas regiões de tecnologia emergente, como a África, onde 73% dos entrevistados estão usando o Kubernetes na produção.
O Kubernetes agenda e automatiza tarefas essenciais para o gerenciamento de arquiteturas baseadas em contêineres, incluindo a implementação de contêineres, atualizações, descoberta de serviços, provisionamento de armazenamento, balanceamento de carga, monitoramento de integridade e muito mais. Na IBM, ajudamos os clientes a modernizar suas aplicações e otimizar sua infraestrutura de TI com o Kubernetes e outras soluções nativas em nuvem.
Implemente clusters seguros e altamente disponíveis em uma experiência nativa do Kubernetes com o IBM Cloud Kubernetes Service.
Conteinerize e implemente clusters Kubernetes para plataformas conteinerizadas usando o Red Hat OpenShift on IBM Cloud.
Leia sobre a história do Kubernetes
Explore o IBM Cloud Kubernetes Service
Conheça o Red Hat OpenShift on IBM Cloud