Kubernetes completa 10 anos: como conduziu a computação nativa em nuvem na última década – e o que vem a seguir
Assim como o Linux, o Kubernetes é uma prova do poder da colaboração e inovação de código aberto. Como conseguiríamos sem ele?
Se você acabasse com o Linux, a nuvem, os contêineres ou o Kubernetes, não reconheceria o mundo tecnológico de hoje. Linux é a base do sistema operacional para tudo isso; a nuvem nos dá acesso a todos os seus aplicativos e recursos; os contêineres são onde esses aplicativos ficam; e o Kubernetes orquestra todos os contêineres. Remova qualquer um deles e estaremos vivendo e trabalhando em um reino mais primitivo.
Poucas tecnologias tiveram um impacto tão profundo no cenário em constante evolução da computação nativa da nuvem como o Kubernetes. Ao comemorar seu 10º aniversário, o Kubernetes é uma prova do poder da colaboração e inovação de código aberto. Desde seu início humilde no Google até se tornar o padrão de fato para orquestração de contêineres, o Kubernetes transformou a forma como implantamos, gerenciamos e dimensionamos aplicativos.
Você não precisa acreditar apenas na minha palavra. No recém-lançado The Voice of Kubernetes Experts Report 2024 da Pure Storage, a empresa descobriu que “nos próximos cinco anos, 80% dos novos aplicativos serão construídos em plataformas nativas da nuvem”. Estou surpreso que seja tão baixo.
Veja, o Kubernetes mudou a forma como fazemos computação. Como me disse Liz Rice, diretora de código aberto da Isovalent, uma empresa de redes, segurança e observabilidade baseada em eBPF, o Kubernetes mudou fundamentalmente a maneira como abordamos redes e segurança:
Kubernetes é fundamentalmente dinâmico. Os pods podem ser ampliados ou reduzidos em resposta à demanda, e as cargas de trabalho podem ser agendadas e reprogramadas em máquinas diferentes. Portanto, embora a rede entre cargas de trabalho do Kubernetes use pacotes IP, os endereços IP só são significativos no curto prazo porque são usados e reutilizados para diferentes cargas de trabalho em momentos diferentes. Isso significa que as ferramentas tradicionais de rede e segurança que identificam o tráfego com base em portas e endereços IP não são mais suficientes. Precisamos de ferramentas que mapeiem endereços IP efêmeros para identidades significativas do Kubernetes, como pods, serviços, namespaces e nós.
Vamos viajar pela última década para entender onde o Kubernetes começou, como ele moldou o mundo nativo da nuvem e o que está por vir.
Gênese do Kubernetes
A história do Kubernetes começa no início da década de 2010 no Google, onde os engenheiros enfrentavam os desafios do gerenciamento de aplicações em contêineres de grande escala. Todos reconheceram a importância dos contêineres e que precisávamos de uma maneira de gerenciá-los.
Dentro do Google, eles já sabiam a importância dos contêineres organizadores. Afinal, o Google já usava contêineres antes de o Docker torná-los populares. Quando os engenheiros do Google Craig McLuckie, Joe Beda e Brendan Burns apresentaram a ideia pela primeira vez em 2013 a Urs Hölzle, então chefe de infraestrutura técnica do Google, ele respondeu: "Então, deixe-me ver se entendi. Você quer construir uma versão externa do Borg agendador de tarefas. Uma de nossas vantagens competitivas mais importantes, sobre a qual nem falamos externamente.
Sim, sim, eles fizeram. Eventualmente, eles convenceram Hölzle de que era uma boa ideia.
Por que? McLuckie explicou:
Sempre acreditamos que o código aberto do Kubernetes era o caminho certo a seguir, trazendo muitos benefícios para o projeto. Por um lado, os ciclos de feedback eram essencialmente instantâneos – se houvesse um problema ou algo não funcionasse bem, sabíamos disso imediatamente. Mas o mais importante é que pudemos trabalhar com muitos engenheiros excelentes, muitos dos quais realmente entendiam as necessidades das empresas que se beneficiariam com a implantação de contêineres. Foi um ciclo virtuoso: o trabalho de engenheiros talentosos gerou mais interesse no projeto, o que aumentou ainda mais o índice de melhoria e utilização.
Foi assim que no início de junho de 2014, na primeira DockerCon, começou “A Guerra da Orquestração de Contêineres”. Apache Mesos, GearD da Red Hat, Docker Libswarm, Tupperware do Facebook e Kubernetes foram todos anunciados. Como disse Brad Rydzewski, então fundador do Drone.io: "O que aprendi na #dockercon: todo mundo está construindo sua própria plataforma de orquestração. Sério. Todo mundo."
Rydzewski não estava errado. Mais programas de orquestração surgiram rapidamente.
Mesmo naqueles primeiros dias, porém, pensei que o Kubernetes seria o vencedor claro. Por ter sido inspirado no programa de gerenciamento de contêineres Borg do Google, usado desde 2003, ele tinha uma maturidade que faltava aos outros programas.
O Kubernetes rapidamente ganhou força. O nome "Kubernetes'' vem da palavra grega para "timoneiro" ou "piloto", simbolizando seu papel na direção de aplicações em contêineres. O logotipo do Kubernetes, uma roda de navio de sete raios, presta homenagem à sua herança Borg e ao seu primeiro nome, Seven of Nine, um Borg amigável de Star Trek, que foi descartado por motivos óbvios de marca registrada.
Adoção rápida e crescimento da comunidade
A natureza de código aberto e o conjunto robusto de recursos do Kubernetes tornaram-no um sucesso instantâneo entre desenvolvedores e empresas. Em 2015, o Kubernetes atingiu a versão 1.0, e o Google fez parceria com a Linux Foundation para formar a Cloud Native Computing Foundation (CNCF), tendo o Kubernetes como sua tecnologia inicial. Esta mudança foi fundamental para promover uma comunidade vibrante em torno do Kubernetes, levando à inovação rápida e à adoção generalizada.
Embora outros programas de orquestração de contêineres ainda estejam conosco, em 2017 a Amazon Web Services (AWS) anunciou o Elastic Container Service for Kubernetes (EKS), e todos puderam ler o que estava escrito na parede. O Kubernetes dominaria o mundo nativo da nuvem.
Simultaneamente, o CNCF alimentou o ecossistema Kubernetes. Hoje, centenas de programas nativos da nuvem dependem do Kubernetes. Hoje, não existem grandes provedores de nuvem que não dependam do Kubernetes. Tornou-se a plataforma de orquestração de contêineres ideal.
Transformando o desenvolvimento nativo da nuvem
O impacto do Kubernetes no desenvolvimento nativo da nuvem não pode ser exagerado. Ela introduziu um novo paradigma para implantação e gerenciamento de aplicativos, permitindo que os desenvolvedores se concentrassem em escrever código em vez de se preocuparem com a infraestrutura. O Kubernetes abstrai as complexidades da orquestração de contêineres, fornecendo recursos como implementações e reversões automatizadas, autocorreção e escalonamento horizontal.
Outra vantagem importante do Kubernetes é sua portabilidade. Os aplicativos implantados no Kubernetes podem ser executados em qualquer provedor de nuvem ou infraestrutura local, tornando-o uma escolha ideal para ambientes híbridos e multinuvem. Na verdade, a nuvem híbrida vive e morre pelo Kubernetes. Essa flexibilidade tem sido um divisor de águas para as empresas, permitindo-lhes evitar a dependência de fornecedores e otimizar suas estratégias de nuvem.
Ao longo dos anos, além dos programas nativos da nuvem relacionados, o Kubernetes gerou um rico ecossistema de ferramentas e projetos que ampliam seus recursos. Isso inclui o Helm, o gerenciador de pacotes do Kubernetes que simplifica a implantação e o gerenciamento de aplicativos, fornecendo gráficos reutilizáveis, e o Prometheus, o poderoso programa de monitoramento e alerta do ambiente do Kubernetes.
A ascensão do Kubernetes também deu origem a novos paradigmas como o GitOps, que utiliza o Git como a única fonte de verdade para infraestrutura declarativa e gerenciamento de aplicativos.
O futuro do Kubernetes
Olhando para o futuro, o Kubernetes não mostra sinais de desaceleração. A plataforma continua a evoluir, com novos recursos e melhorias sendo adicionados regularmente. A comunidade Kubernetes está explorando maneiras de simplificar a experiência do usuário, melhorar a segurança e aumentar a escalabilidade.
Ville Aikas, cofundador da Chainguard e um dos criadores do Kubernetes, observou:
Temos esse enorme cenário CNCF que floresceu, o que é maravilhoso em termos de toda a diversidade de opções de ferramentas e infraestrutura que oferece às equipes de plataforma. Mas acho que isso também cria uma série de escolhas que precisam ser feitas para operar o Kubernetes – e esse cenário se tornou enorme. Sempre achei que um dos principais motivos pelos quais o Kubernetes se tornou tão popular foi sua interface de programação de aplicativos (API) ser tão simples e a carga cognitiva para usá-lo ser relativamente baixa. À medida que o Kubernetes continua a amadurecer, ele precisa de alguma forma manter a simplicidade do seu modelo mental e a usabilidade da sua API.
É mais fácil falar do que fazer. Fazer malabarismos com o Kubernetes e os paradigmas de programação nativa da nuvem tornou-se cada vez mais difícil.
Como disse Shahar Azulay, CEO e cofundador da Groundcover, uma empresa de monitoramento de desempenho eBPF:
O Kubernetes demonstrou sua capacidade de gerenciar diversas tarefas de forma eficaz, mas sua complexidade requer configuração considerável e manutenção contínua. Semelhante à forma como o Linux se desenvolveu em um sistema operacional confiável, espero que o Kubernetes se transforme em uma camada de abstração mais fácil de usar. À medida que a adoção do Kubernetes continua a crescer há uma década, a necessidade de eficiência e otimização de custos torna-se cada vez mais crítica.
Olhando para o futuro, Arroz Isovalente disse:
Já estamos vendo o Kubernetes sendo usado em ambientes mais híbridos junto com cargas de trabalho legadas e em dispositivos de ponta. O Cilium, o programa de rede, observabilidade e segurança nativo da nuvem e de código aberto baseado em eBPF, tem como visão que um desenvolvedor de aplicativos não precisa saber ou se preocupar com onde os serviços com os quais deseja interagir estão sendo executados: conectividade e segurança devem tudo será tratado na camada de plataforma.
Outro desenvolvimento interessante no horizonte é a integração do Kubernetes com a computação sem servidor. Projetos como Kubeless e Fission estão trazendo recursos sem servidor para o Kubernetes, permitindo que os desenvolvedores criem e implantem funções como serviço (FaaS) sobre seus clusters Kubernetes existentes. Esta fusão de serverless e Kubernetes promete desbloquear novas possibilidades para aplicativos nativos da nuvem.
Os combos de edge computing e Kubernetes também estão crescendo. À medida que mais dispositivos e aplicações migram para a borda, o Kubernetes está sendo adaptado para dar suporte a implantações na borda. A comunidade Kubernetes está trabalhando em projetos como KubeEdge, MicroK8s e Red Hat Device Edge para permitir clusters Kubernetes leves e eficientes que possam ser executados em dispositivos de borda.
O futuro do Kubernetes é brilhante. Com inovação contínua e um ecossistema próspero, o Kubernetes está preparado para continuar moldando o cenário nativo da nuvem nos próximos anos. Faça um brinde a uma década de Kubernetes e um brinde a mais 10 anos de inovação, colaboração e excelência em orquestração de contêineres.