Como Operators Transformam o Kubernetes em uma Plataforma Universal

Nos últimos anos, o Kubernetes se consolidou como uma tecnologia central no ecossistema de infraestrutura de várias empresas. Sua capacidade de orquestrar contêineres em escala permitiu às empresas construir e gerenciar aplicativos distribuídos de maneira eficiente e robusta. Porém, o Kubernetes não é apenas uma ferramenta de orquestração de contêineres; ele evoluiu para um verdadeiro control plane universal, especialmente com a introdução dos operators – componentes que ampliam a função do Kubernetes, permitindo o gerenciamento de serviços e aplicações complexas com baixo overhead de gerenciamento. 

Os operators são controladores personalizados para gerenciar qualquer tipo de software. Eles encapsulam o conhecimento operacional de especialistas e automatizam tarefas rotineiras, como backups, escalabilidade e atualizações de sistema. Com isso, torna-se possível usar o Kubernetes para gerenciar bancos de dados, sistemas de mensageria e até mesmo aplicações inteiras, sem depender dos serviços gerenciados de um provedor de nuvem específico. Esse fator transforma o Kubernetes em uma plataforma que possibilita arquiteturas complexas e verdadeiramente cloud-agnostic.

Um excelente exemplo do poder dos operators no Kubernetes é o PostgreSQL Operator, como o Zalando PostgreSQL Operator ou o CloudNativePG. Eles permitem gerenciar clusters de bancos de dados PostgreSQL diretamente no Kubernetes, automatizando tarefas que normalmente exigiriam serviços gerenciados oferecidos pelos provedores cloud. Com eles, é possível configurar réplicas, backups automáticos, failover e upgrades de versão de forma totalmente integrada ao ambiente Kubernetes. Além disso, eles fornecem uma alta flexibilidade e personalização, permitindo ajustar a infraestrutura às necessidades específicas da aplicação, sem ficar preso a limitações impostas por serviços gerenciados. O uso de um operator de PostgreSQL elimina a dependência de soluções específicas de um provedor, garantindo que o banco de dados possa ser executado de forma consistente em qualquer ambiente — seja na nuvem pública, privada ou on-premise.

Outro grande avanço que fortalece essa tendência é a integração do Kubernetes com ferramentas de Infraestrutura como Código (IaC). O Crossplane é um exemplo claro dessa evolução. Ele expande o Kubernetes para além do gerenciamento de aplicações, permitindo também o gerenciamento de recursos de infraestrutura. Com o Crossplane, o Kubernetes assume o papel de control plane unificado, capaz de orquestrar não apenas contêineres e workloads, mas também recursos de nuvem como redes, volumes de armazenamento e bancos de dados, tudo através de definições declarativas.

O Kubernetes evoluiu então para muito mais do que um orquestrador de contêineres. Com o auxílio de ferramentas como o Crossplane e operators, ele se tornou uma plataforma universal para gerenciar infraestruturas, substituindo serviços gerenciados por soluções mais flexíveis e personalizáveis. Essa evolução permite que as organizações tenham maior controle sobre seus ambientes e que as equipes de DevOps padronizem seus processos, melhorando a agilidade e a eficiência.

Essa abordagem também reforça a tendência de abstrair a complexidade da infraestrutura, permitindo que desenvolvedores se concentrem mais na entrega de valor para os negócios. Eles não precisam se preocupar tanto com as diferenças entre Oracle Cloud, AWS, Azure, Google Cloud ou qualquer outro provedor, pois o Kubernetes atua como uma camada intermediária que uniformiza essas interações.Por fim, o futuro aponta para um mundo onde o Kubernetes, com operators e ferramentas como o Crossplane, será o orquestrador que governa não apenas as aplicações, mas toda a infraestrutura. Ele já está pavimentando o caminho para arquiteturas cada vez mais agnósticas à nuvem, proporcionando um controle centralizado e eficaz. Essa capacidade de unificar o gerenciamento de recursos e aplicações sob uma única plataforma coloca o Kubernetes no centro da revolução da computação em nuvem.

Continuar lendo


O poder da colaboração

“Eu trabalho sozinho em casa. Sempre trabalhei. Foi assim que iniciei o desenvolvimento do Linux. Não o iniciei como um projeto colaborativo, mas sim como um entre vários projetos que tinha feito na época. Em parte, porque eu precisava ver o resultado final, mas, principalmente, porque eu apenas gostava de programar”.

Assim Linus Torvalds descreve o início do desenvolvimento de um software (mais especificamente, o núcleo de um sistema operacional) lançado em 1991 e que, atualmente, está em dois terços de todos os servidores da Internet; nos 500 maiores supercomputadores do mundo; em 75% dos smartphones (o Android é baseado no Linux); nos sistemas de controle de tráfego aéreo e em inúmeros equipamentos médicos. O Grande Colisor de Hádrons e o foguete Falcon 9, da SpaceX, usam o Linux em seus sistemas de controle. Também é possível que ele esteja na sua Smart TV, no seu roteador de Internet e, futuramente, na sua geladeira e no seu carro autônomo.

Um software criado por um jovem finlandês hoje influencia mais as nossas vidas do que qualquer outro, desafiando empresas como a Microsoft e Apple e sendo fundamental para os negócios de outras gigantes como o Facebook, Google e Amazon.

São vários os fatores que levaram o Linux ao sucesso, assim como outros softwares livres/código aberto, mas os principais, sem dúvida, se resumem à colaboração. De acordo com um relatório apresentado em 2017 pela Linux Foundation, uma organização sem fins lucrativos criada para fomentar o crescimento do Linux, desde 2005, 15.637 desenvolvedores de mais de 1.400 empresas contribuíram para o Linux. Apenas em 2016, foram mais de 4.300 desenvolvedores.

Nas organizações, isso não é uma novidade. Uma cultura de colaboração resulta em inovação, melhores produtos, maior produtividade e capacidade de agir rapidamente. Especialmente no setor de tecnologia da informação, as metodologias mais recentes de desenvolvimento e manutenção de softwares priorizam o trabalho colaborativo. Não à toa, as empresas emergentes (startups) criam espaços de trabalho que encorajam esse comportamento.

A tecnologia é fundamental para conseguirmos realizar a conexão entre os colaboradores e aprimorarmos a comunicação em grande escala. De acordo com um porta-voz do Slack, uma plataforma de colaboração que atualmente supera os 8 milhões de usuários diários, “estamos nos estágios iniciais de uma transformação de 100 anos sobre como as pessoas vão trabalhar e se comunicar”. O próprio Linus Torvalds enxergou a necessidade de uma nova ferramenta para organizar melhor as contribuições que são feitas para o Linux e criou um sistema de controle que se tornou o padrão de fato para o desenvolvimento colaborativo de software.

Embora pesquisas recentes mostrem que as pessoas são mais produtivas quando trabalham sozinhas, a criação e desenvolvimento de novas ideias é cada vez mais um processo colaborativo. A ciência hoje se tornou muito complexa e especializada para que uma única pessoa consiga avanços significativos. O próximo passo da evolução do nosso conhecimento não depende mais de alguns poucos cérebros privilegiados, mas de como conectamos eficientemente a maior quantidade de cérebros hiper-especializados na pesquisa e desenvolvimento. O Linux é a prova disso.

Continuar lendo


Utilização de CPU em sistemas Linux multi-thread

O Hyper-threading (HT) é uma tecnologia da Intel introduzida nos processadores Xeon em 2002 que permite que um núcleo do processador execute mais de uma thread de uma única vez.

O Hyper-threading simula dois processadores lógicos em um único núcleo de processador físico. Recursos do processador físico como cache de memória, unidade lógica e aritmética, barramentos, são compartilhados entre os processadores lógicos. Naturalmente, os processadores lógicos competem por estes recursos e ficam aguardando se as unidades desejadas já estiverem sendo usadas.

Apesar de simular dois processadores lógicos, o Hyper-threading não oferece o dobro de desempenho como um núcleo físico. Segundo a Intel, o aumento de desempenho é de até 30%, dependendo da configuração do sistema. Os ganhos são mais expressivos em ambientes multitarefa.

O kernel Linux enxerga o processador lógico, correspondente a thread adicional do Hyper-threading, como um núcleo tradicional. Por exemplo, um processador com 6 núcleos e Hyper-threading habilitado totaliza 12 núcleos.

O problema é que as ferramentas padrões de monitoramento das distribuições Linux (top, mpstat, vmstat, etc) consideram que todos os processadores têm o mesmo desempenho e não refletem os efeitos colaterais do compartilhamento de recursos do Hyper-threading.

Supondo que 6 processos single-thread estejam em execução neste sistema, considerando que cada um utilize 100% de um núcleo do processador, as ferramentas de monitoramento irão mostrar o total de utilização de processamento em 50%. Entretanto, como sabemos que as threads não oferecem desempenho similar aos dos núcleos, este percentual está incorreto.

Não há uma maneira simples de resolver este problema. Outros sistemas operacionais, como o AIX, calcula o percentual total fazendo aproximações com base no desempenho estimado de cada thread. Especificamente no Linux é importante não tratar os valores de processamento de forma isolada quando estiver realizando o monitoramento e estabelecer um threshold para o percentual total abaixo de 70%.

Referências:

Continuar lendo


RDO: Distribuição RPM do OpenStack

OpenStack é um projeto Open Source para construir e gerenciar nuvens públicas ou privadas no modelo conhecido como infrastructure-as-a-service (IaaS).

Tentando traduzir para quem não está acostumado com o vocabulário da computação em nuvem, pode-se dizer que o OpenStack fornece os componentes de software para disponibilizarmos serviços semelhantes aos principais serviços da Amazon AWS (EC2, S3, RDS, dentre outros), tanto para fornecê-los para terceiros (nuvem pública), como para uso interno (nuvem privada).

Continuar lendo


Atualização dinâmica do kernel Linux

É comum administradores Linux se vangloriarem da estabilidade de seus servidores dizendo que eles não foram reiniciados nos últimos anos. O uptime do sistema é uma espécie de medalha conseguida a duras penas na guerra santa entre os sistemas operacionais da Microsoft e o Linux.

Enquanto os sistemas operacionais da Microsoft carregam o fardo do seu passado sombrio de instabilidade, o Linux mantém fama oposta. Mas até que ponto não reiniciar o sistema por um longo período de tempo é algo a ser comemorado?

Se por um lado isto demonstra algumas virtudes do sistema operacional, por outro revela que o administrador de sistemas não está preocupado com a segurança de seus servidores. Falhas são encontradas com alguma frequência no kernel Linux, e uma atualização neste componente exige a reinicialização do sistema.

Continuar lendo