Colaborador de Sylvain Kalache
Sylvain Kalache é co-fundador da Holberton, uma empresa de edtech que treina talentos digitais em mais de 10 países. Empresário e engenheiro de software, ele trabalha na indústria de tecnologia há mais de uma década. Parte da equipe que levou o SlideShare a ser adquirido pelo LinkedIn, ele escreveu para CIO e VentureBeat.
Mais postagens deste colaborador
O Kubernetes está rapidamente se tornando um padrão do setor, com até 94% das organizações implantando seus serviços e aplicativos na plataforma de orquestração de contêineres, de acordo com uma pesquisa. Um dos principais motivos pelos quais as empresas implantam no Kubernetes é a padronização, que permite que usuários avançados dobrem os ganhos de produtividade.
A padronização no Kubernetes oferece às organizações a capacidade de implantar qualquer carga de trabalho, em qualquer lugar. Mas faltava uma peça: a tecnologia presumia que as cargas de trabalho eram efêmeras, o que significa que apenas cargas de trabalho sem estado poderiam ser implantadas com segurança no Kubernetes. No entanto, recentemente a comunidade mudou o paradigma e trouxe recursos como StatefulSets e Storage Classes, que possibilitam o uso de dados no Kubernetes.
Embora a execução de cargas de trabalho com estado no Kubernetes seja possível, ainda é um desafio. Neste artigo, forneço maneiras de fazer isso acontecer e por que vale a pena.
Faça isso progressivamente
O Kubernetes está a caminho de se tornar tão popular quanto o Linux e a maneira de fato de executar qualquer aplicativo, em qualquer lugar, de maneira distribuída. Usar o Kubernetes envolve aprender muitos conceitos técnicos e vocabulário. Por exemplo, os recém-chegados podem ter dificuldades com as muitas unidades lógicas do Kubernetes, como contêineres, pods, nós e clusters.
Se você ainda não está executando o Kubernetes em produção, não pule diretamente para as cargas de trabalho de dados. Em vez disso, comece movendo aplicativos sem estado para evitar a perda de dados quando as coisas derem errado.
Se você não encontrar um operador que atenda às suas necessidades, não se preocupe, porque a maioria deles é de código aberto.
Entenda as limitações e especificidades
Depois de se familiarizar com os conceitos gerais do Kubernetes, mergulhe nas especificidades dos conceitos com estado. Por exemplo, como os aplicativos podem ter diferentes necessidades de armazenamento, como requisitos de desempenho ou capacidade, você deve fornecer o sistema de armazenamento subjacente correto.
O que a indústria geralmente chama de “perfis” de armazenamento é denominado Classes de Armazenamento no Kubernetes. Eles fornecem uma maneira de descrever os diferentes tipos de classes que um cluster Kubernetes pode acessar. As classes de armazenamento podem ter diferentes níveis de qualidade de serviço, como operações de E/S por segundo por GiB, políticas de backup ou políticas arbitrárias, como modos de ligação e topologias permitidas.
Outro componente crítico a ser entendido é o StatefulSet. É o objeto da API do Kubernetes usado para gerenciar aplicativos com estado e oferece recursos importantes, como: Identificadores de rede estáveis e exclusivos que permitem acompanhar o volume e desanexá-los e reanexá-los conforme desejar. Armazenamento estável e persistente para que seus dados estejam seguros. Implantação e dimensionamento ordenados e otimizados, necessários para muitas operações do dia 2.
Embora o StatefulSet tenha sido um substituto bem-sucedido para o infame PetSet (agora obsoleto), ele ainda é imperfeito e tem limitações. Por exemplo, o controlador StatefulSet não tem suporte integrado para redimensionamento de volume (PVC) — o que é um grande desafio se o tamanho do conjunto de dados do aplicativo estiver prestes a crescer acima da capacidade de armazenamento alocada atual. Existem soluções alternativas, mas tais limitações devem ser compreendidas com bastante antecedência para que a equipe de engenharia saiba como lidar com elas.