GEEKS

Você realmente precisa do Kubernetes (K8s)?

Você realmente precisa do Kubernetes (K8s)?

O Kubernetes tem a reputação de ser complicado. Embora seja um tool fantástico, às vezes os benefícios podem não superar a complexidade adicional, especialmente para pequenas empresas que gerenciam implantações simples. O velho Docker é bom o suficiente?



Em que o Kubernetes é ótimo

O Kubernetes (K8s) é usado com o Docker com muita frequência em ambientes profissionais, e isso pode fazer com que pareça uma versão atualizada ou mais organizada do Docker. Embora isso seja verdade em alguns aspectos, não é o objetivo exato dos K8s.

O Kubernetes é um “sistema de orquestração de contêineres”, e é importante lembrar o que isso significa. O plano de controle do Kubernetes lida com todos os detalhes de “orquestração” de quais contêineres serão executados em quais nós. Ele separa o {hardware} do tool e permite que suas máquinas sejam executadas apenas como nós de trabalho, o que idealmente é tudo o que elas realmente deveriam ser.

O Kubernetes é fantástico quando você tem uma grande implantação de produção que precisa ser dimensionada, reparada e gerenciada automaticamente. Quando você está gerenciando centenas de contêineres em vários servidores, ter que lidar com balanceamento de carga e mover contêineres de servidor para servidor pode ser irritante. K8s lida com isso para você com opções de configuração extras.

Gráfico mostrando a arquitetura de cluster do Kubernetes
Gráfico mostrando a arquitetura de cluster do Kubernetes

O Kubernetes também é semelhante à infraestrutura como código (IaC), outro conceito útil. Ele permite que você controle seus serviços usando arquivos de configuração que podem ser rastreados por meio do Git. Isso pode melhorar drasticamente seus processos de implantação, permitindo que eles sejam rastreados ao longo das ramificações, testados, versionados e revertidos, se necessário.

Em que o Kubernetes não é ótimo

A important desvantagem do Kubernetes é que ele é notoriamente complicado. Isso pode não ser um grande problema se você já estiver familiarizado com ele, mas, em qualquer caso, adiciona pace e complexidade extras para colocar seus aplicativos em funcionamento. É uma ótima ferramenta para aprender e uma boa habilidade para se ter. Mas funciona melhor com implantações maiores e, se você estiver executando apenas alguns servidores ou alguns contêineres, o esforço additional do Kubernetes pode não valer a pena.

O Kubernetes é um intermediário, mas você sempre pode seguir a velha guarda e assumir o papel de orquestrador. O bom do Docker é que ele facilita o processo de criação e movimentação de aplicativos com a conteinerização. Criar um novo servidor é relativamente simples e você pode ter uma nova instância do EC2 da AWS executando seu contêiner em questão de minutos.

Sem o Kubernetes, o único problema adicional que você tem é a necessidade de executar comandos manualmente em seus servidores com o docker CLI ou docker-compose API. Se você precisar adicionar um novo contêiner ou mover um contêiner para outro nó, precisará executar esses comandos novamente. Isso pode ser um problema se, por exemplo, você tiver um tráfego inesperadamente alto e precisar iniciar mais instâncias automaticamente. K8s resolveria esse problema. Mas, em muitos casos, seu tráfego pode ser relativamente estável ou pelo menos previsível semanalmente, especialmente para serviços de back-end que realmente não precisam ser dimensionados automaticamente.

Essencialmente, o próprio Docker já melhora bastante o processo de execução de aplicativos portáteis. É uma grande melhoria em relação à instalação de aplicativos da maneira antiga. O Kubernetes melhora um pouco o Docker e automatiza algumas tarefas necessárias para grandes redes, mas adiciona muita complexidade.

O valor disso dependerá de quanto pace você realmente economiza. Se essa complexidade for aceitável para você e acabar economizando seu pace, você deve usar o K8s, mas se isso não acontecer, você não deve perder seu pace com ele – especialmente quando você pode simplesmente trocar para ele mais tarde, se necessário .

O que você deve usar em vez disso?

É bom dar um passo para trás e ver o que você realmente está considerando fazer com o Kubernetes. Se você deseja que sua rede seja dimensionada automaticamente, gerencie seus recursos automaticamente e inicie pods em diferentes servidores com base na configuração, o Kubernetes é uma ótima ferramenta para aprender. Se você está preocupado com a complexidade, provedores de nuvem como a AWS gerenciam serviços do Kubernetes como o EKS, que pode lidar com parte do trabalho sujo para você, especialmente quando se trata de recursos de gerenciamento e provisionamento.

No entanto, se tudo o que você deseja é uma maneira de gerenciar seus contêineres com mais facilidade ou atualizar contêineres automaticamente, existem ferramentas muito mais simples para o trabalho. Eles podem não ser tão completos quanto o Kubernetes, mas serão mais simples e podem economizar seu pace.

Se você deseja dimensionar automaticamente determinados serviços, quase sempre precisará conversar com a API de um provedor de nuvem para provisionar novos recursos. O Kubernetes pode lidar com isso para você em muitas plataformas, mas serviços como AWS, Azure e GCP têm serviços de contêiner simples com recursos de dimensionamento automático. O serviço ECS da AWS pode ser facilmente configurado para dimensionar automaticamente para atender à alta demanda.

RELACIONADO: Como começar com implantações de contêiner de dimensionamento automático no AWS ECS

Se você precisar atualizar automaticamente os contêineres sempre que enviar novas versões para o registro do Docker, poderá usar um serviço como o Watchtower. Ele é executado em um nó do trabalhador como um serviço do Docker em si, com o soquete do Docker exposto e observa as alterações. Assim que um novo contêiner for enviado, a Torre de Vigia reiniciará o contêiner. Isso economizará pace executando reinicializações de contêineres e é uma boa alternativa às atualizações do Kubernetes.

docker run --detach 
--name watchtower 
--volume /var/run/docker.sock:/var/run/docker.sock 
containrrr/watchtower

Se você deseja ser mais organizado em geral com a forma como gerencia seus contêineres, considere configurar uma GUI de gerenciamento do Docker como o Portainer. O Portainer é uma GUI baseada na Internet para gerenciar implantações do Docker. Ele funciona com vários nós de trabalho, muito parecido com o Kubernetes, mas permite lidar com o trabalho de orquestração, configurando contêineres nos servidores desejados.

O Portainer é realmente fácil de configurar, pois é embalado como um contêiner. Se você quiser saber mais, leia nosso guia para configurá-lo e trabalhar com ele.

RELACIONADO: Como começar com o Portainer, uma interface de usuário da Internet para Docker



Fonte da Notícia: www.howtogeek.com

Artigos relacionados

Botão Voltar ao topo