Qual plataforma de orquestração escolher

Nomad e Kubernetes surgiram como duas das plataformas de orquestração mais populares disponíveis para suas cargas de trabalho de orquestração dinâmica.

As plataformas de orquestração ajudam a automatizar a configuração, o gerenciamento e a coordenação de vários aplicativos diferentes que você está executando.

Ambos Nômade e Kubernetes simplifique a implantação e o gerenciamento de seus aplicativos em contêineres. Com a plataforma de orquestração correta, você pode gerenciar com eficiência seus diferentes microsserviços e contêineres – desde a descoberta e implantações de serviços até a coordenação e o dimensionamento.

Antes de escolher a plataforma certa, vamos aprender mais sobre Nomad e Kubernetes.

O que é Nômade?

Nômade da HashiCorp aborda o problema de orquestração de carga de trabalho. Com flexibilidade, agenda e orquestra a implantação e o gerenciamento de containers. Ele funciona tanto na nuvem quanto no local e também oferece suporte a cargas de trabalho não conteinerizadas.

Com o Nomad, você obtém um binário simples que deve executar. Ao contrário de outras soluções, ele ocupa um espaço de recursos muito pequeno e não ocupa muito espaço computacional de seus servidores. Além dos contêineres, você pode executar várias cargas de trabalho como Windows, Java, Máquinas Virtuais e Docker.

Você pode implantar e gerenciar seus contêineres corporativos em produção. Além disso, você também pode executar seus aplicativos não em contêineres no cluster Nomad sem a necessidade de colocá-los em contêineres. Usando o Nomad, você pode expandir facilmente e fazer com que seus aplicativos sejam executados geograficamente mais perto de onde seus clientes residem. Além disso, você pode executar com eficiência trabalhos em lote de curta duração.

O Nomad vem em duas versões – a Community Edition e a Enterprise Edition. O Edição da comunidade é gratuito e permite autogerenciar seu cluster Nomad. Em 15 minutos, você pode executá-lo localmente ou em seu ambiente de nuvem. Enquanto isso, o Edição Empresarial fornece suporte e recursos adicionais como colaboração, operações e governança.

O que é Kubernetes?

Kubernetes é uma plataforma de orquestração extensível, portátil e altamente eficiente. Também conhecido como K8s, foi inicialmente desenvolvido pelo Google. Atualmente é gerenciado pela Cloud Native Computing Foundation ou CNCF e é a plataforma de orquestração mais popular.

Com o Kubernetes, você pode mover sua carga de trabalho com eficiência para onde for necessário – seja no local, na nuvem pública ou no modo híbrido. Seu objetivo é fornecer todas as ferramentas possíveis que você possa precisar para resolver suas necessidades de orquestração e gerenciamento de infraestrutura.

É de longe a plataforma de orquestração mais popular. Os principais provedores de serviços em nuvem, como Amazon Web Service e Google Cloud Platform, fornecem serviços gerenciados de Kubernetes – Amazon Elastic Kubernetes Service (AWS EKS) e Google Kubernetes Engine (GKE), respectivamente.

Leia também: Primeiros passos com Kubernetes: uma introdução para iniciantes

Mas qual você deve escolher para os requisitos da sua plataforma de orquestração? Vamos descobrir comparando os dois.

Nômade x Kubernetes

#1. Instalação

Como o primeiro passo para usar a maioria das ferramentas e tecnologias de software é a instalação, a facilidade dela desempenha um papel importante. Ao escolher entre Nomad e Kubernetes, você gostaria de ver como é fácil começar com eles.

Nômade

Para o Nomad, você obtém um binário pré-compilado ou um pacote que precisa instalar. Para instalação manual em sua máquina local, você pode baixar e instale o binário oficial. Se você estiver no Linux, poderá instalar o pacote oficial do Linux. Em qualquer caso, após a pós-instalação, basta instalar os plugins CNI (Container Network Interface) diretamente da linha de comando.

É ainda mais simples se você estiver instalando no MacOS ou Windows usando ferramentas de gerenciamento de pacotes como Homebrew e Chocolatey, respectivamente. Com apenas um comando, sua instalação estaria completa, incluindo os plugins CNI.

  O que é um acordo de não divulgação (NDA) e quando você deve usá-lo?

Kubernetes

Quando se trata de Kubernetes, existem diferentes componentes e clientes que você pode instalar de acordo com suas necessidades. Você obtém binários para cada um. Possui diferentes imagens de contêiner para diferentes tempos de execução e arquiteturas de sistema.

Você pode verificar o repositório oficial para o binário oficial que corresponde à sua plataforma, seja Darwin, Linux ou Windows, e à arquitetura do seu sistema. Depois de instalar a imagem de contêiner correta, você precisará do kubectl – a ferramenta de linha de comando que permite interagir com os contêineres.

#2. Escalabilidade

Para cargas de trabalho de contêiner, a escalabilidade é um fator importante. Ele determina a capacidade do seu sistema de lidar com suas crescentes cargas de trabalho. Resumindo, se você precisar de mais poder computacional, sua estrutura de orquestração deverá ser capaz de adicionar novos recursos facilmente.

Nômade

Foi comprovado que o Nomad executa clusters que excedem 10.000 nós em um ambiente de produção. Em 2020, o Nomad concluiu um teste de estresse com 2 milhões de contêineres docker em 6.100 hosts. Isso abrangeu mais de 10 regiões diferentes da AWS e durou 22 minutos. Isso superou a série anterior de sucesso de 1 milhão de contêineres.

Você também obtém escalonamento automático horizontal com o Nomad Autoscaler. Você pode executar isso como um processo separado quando necessário.

Kubernetes

A partir da versão 1.28, o Kubernetes pode permitir escalar seu cluster para até 5.000 nós. Você pode executar um total de 150.000 pods ou 300.000 contêineres no total.

Com o aumento da escalabilidade, manter um cluster Kubernetes é mais complicado quando comparado ao gerenciamento de seu cluster Nomad. O Nomad oferece vantagem sobre o Kubernetes com o número total de nós que você pode executar.

#3. Desempenho

Ao escolher uma plataforma de orquestração, você deve buscar um equilíbrio entre recursos e desempenho. O desempenho de uma plataforma de orquestração também determina quantos recursos do sistema você usará.

Nômade

O Nomad ocupa poucos recursos devido à sua abordagem de binário único. Você também evita a instalação de serviços separados para colocar sua plataforma de orquestração em funcionamento. Conseqüentemente, você acaba consumindo menos CPU e memória em seus nós, resultando em menor sobrecarga e melhor desempenho.

É altamente adaptável e pode lidar com diversas cargas de trabalho, seja no local ou na nuvem. Com sua simplicidade, resiliência e eficiência, você terá uma vantagem na manutenção do desempenho à medida que o tamanho do cluster aumenta.

Kubernetes

O Kubernetes é altamente otimizado para cargas de trabalho em contêineres. Se você executa uma frota de microsserviços baseados em contêiner, o Kubernetes é excelente em gerenciá-los. Com seus amplos recursos de rede e ampla variedade de integrações, você pode acelerar e ajustar suas necessidades de orquestração.

Devido ao seu extenso conjunto de recursos e configurações, o Kubernetes consome mais recursos do sistema. À medida que o tamanho do cluster aumenta, você poderá enfrentar sobrecarga e complexidade adicionais no gerenciamento dele.

#4. Rede

A rede é um aspecto importante quando se trata de orquestração de contêineres. Ele determina como seus nós podem se localizar e se comunicar.

Nômade

Sendo fortemente focado na orquestração da carga de trabalho, o Nomad quase não toca na rede e tenta modificar as coisas o menos possível.

Em vez de depender de infraestrutura, o Nomad trabalha com configurações. Você obtém as informações necessárias diretamente da configuração, em vez de executar componentes extras, como servidores DNS ou balanceadores de carga. A unidade base de escalonamento no Nomad, chamada Allocations, pode solicitar portas utilizando o bloco de rede.

Kubernetes

Quando se trata de Kubernetes, a rede é um pilar central. Você pode controlar os seguintes aspectos – comunicação de contêiner para contêiner via localhost, comunicação de pod para pod, comunicação de pod para serviço e comunicação eterna para serviço.

  Como fazer um bom papel de parede ao vivo para o seu iPhone

Comparado às portas dinâmicas do Nomad, o Kubernetes adota uma abordagem diferente. Você obtém a API de serviço como uma abstração para expor um grupo de pods à rede

#5. Requisitos

Se você estiver executando sua plataforma de orquestração em escala, os requisitos do sistema dependerão do tamanho do cluster e das cargas de trabalho que você está executando. Além de CPU e memória, você também precisará de recursos de rede.

Nômade

Para servidores de produção, é aconselhável executar em instâncias de máquinas grandes. É bom que cada instância de servidor tenha entre 4 a 8+ núcleos de CPU, 16 a 32 GB+ de memória e 40 a 80 GB+ de disco rápido. Você também deve garantir uma largura de banda de rede significativa.

Se estiver usando um firewall, você deve garantir que as 3 portas do Nomad sejam permitidas. As 3 portas são – a API HTTP (padrão 4646) usada por servidores e clientes, RPC (padrão 4647) usada para comunicação interna e Serf WAN (padrão 4648) usada por servidores para se comunicar com outros servidores.

Kubernetes

Os clusters Kubernetes podem se tornar muito complexos quando executados em ambientes de produção altamente conteinerizados. No entanto, é aconselhável manter cada nó com um mínimo de 2 a 4 núcleos de CPU e 8 a 16 GB de RAM.

Para clusters grandes, talvez sejam necessários mais recursos por nó. Além disso, você deve garantir que possui largura de banda de rede suficiente.

Embora o Nomad e o Kubernetes possam ser ampliados para atender às suas necessidades, um cluster Kubernetes consumiria mais recursos comparativamente.

#6. Codificação

A facilidade de codificação determina a eficiência com que você pode interagir com a estrutura de sua escolha. Além de definir sua plataforma e trabalhos, você também precisará aprender os comandos CLI para interagir com a ferramenta de linha de comando.

Nômade

HCL ou HashiCorp Configuration Language é a principal linguagem de configuração usada no Nomad. A HCL visa encontrar um equilíbrio entre legível por humanos e amigável para máquinas. Você pode escrever as especificações do trabalho usando isso, incluindo as tarefas, restrições e dependências para seu aplicativo e serviços.

Além disso, você também precisará aprender os comandos CLI da ferramenta de linha de comando Nomad. Isso permite interagir com seu cluster nômade e fazer configurações.

Kubernetes

Em vez de depender de uma linguagem diferente, você pode configurar o Kubernetes usando arquivos YAML. Você também pode usar JSON. Esses arquivos de configuração permitem descrever facilmente como seu aplicativo deve ser executado, incluindo especificações para pods, serviços, implantações e outros recursos.

Quando você executa aplicativos Kubernetes complexos, Helm é um gerenciador de pacotes para Kubernetes que permite definir, instalar e atualizar até mesmo aplicativos Kubernetes complexos. Os gráficos do Helm são escritos em YAML e podem incluir modelos e arquivos de valores para personalizar implantações.

Você usará a ferramenta de linha de comando kubectl para interagir com seu cluster Kubernetes. Isso envolve a execução de vários comandos para criar, modificar e gerenciar recursos do Kubernetes.

#7. Integração

As plataformas de orquestração vêm com seu próprio host de integrações suportadas. Você também pode encontrar várias integrações de terceiros que podem ser adicionadas para aumentar o conjunto de recursos.

Nômade

Com o Nomad, você pode integrar ativamente várias ferramentas e tecnologias. Conecte-se perfeitamente ao Docker e a outros tempos de execução de contêiner, facilitando a implantação de aplicativos em contêineres. Para provisionamento de infraestrutura, você pode usar a integração do Terraform e simplificar a criação de recursos.

Fazendo parte do HashiCrop, o Nomad também permite que você colabore com o HashiCorp Consul para descoberta de serviços e verificações de integridade, enquanto o HashiCorp Vault garante o gerenciamento seguro de segredos. Suas necessidades de monitoramento são atendidas por meio de integrações como Prometheus, Grafana e ELK Stack. Além disso, o Nomad se adapta perfeitamente aos seus pipelines de CI/CD, permitindo a implantação automatizada de aplicativos.

  2 maneiras de abrir o Gerenciador de tarefas no Chromebook

Kubernetes

Sendo uma solução testada pelo tempo, o Kubernetes oferece uma longa lista de tecnologias para integração. Você pode se conectar ao Docker para implantações de contêiner. Para suas necessidades de rede, você pode optar por soluções como Calico ou Cilium. Opções de armazenamento como Ceph e provedores nativos da nuvem como AWS EKS (Amazon Elastic Kubernetes Service) e Google GKE (Google Kubernetes Engine) gerenciam ativamente seu armazenamento persistente. As soluções nativas da nuvem também fornecem serviços adicionais.

Se você deseja oferecer suporte às suas cargas de trabalho sem servidor, o Kubernetes tem o que você precisa. Você pode estender seu Kubernetes com estruturas sem servidor, como Knative e KEDA (escalonamento automático baseado em eventos baseado em Kubernetes).

#8. GUI

Você pode querer se afastar da linha de comando e do código às vezes e visualizar a plataforma que está executando. Ter uma GUI ou interface gráfica do usuário permite que você faça isso.

Nômade

O Nomad fornece uma UI Web integrada como parte do binário. Ao instalar o Nomad e executar o servidor, você obtém a GUI junto com a API e a CLI. Você não precisa de nenhuma configuração para começar a usar a IU e inspecionar seu cluster.

Depois de iniciar o servidor Nomad, você pode digitar o endereço do servidor em seu navegador. Em seguida, você será redirecionado para a UI da Web. Há também um subcomando ui para que você possa visitar a página desejada diretamente da interface de linha de comando.

Kubernetes

O Kubernetes não vem com uma GUI por padrão. No entanto, você pode instalá-lo de acordo com suas necessidades. O próprio Kubernetes oferece uma UI oficial chamada Dashboard. Embora não esteja instalado por padrão, você pode colocá-lo em funcionamento usando a ferramenta kubectl. Usando o Dashboard, você pode obter uma visão geral do seu cluster.

Você pode implantar aplicativos em contêineres em um cluster Kubernetes, gerenciar e solucionar problemas. Provedores nativos da nuvem, como AWS EKS e Google GKE, fornecem suas próprias ferramentas de UI. Existem também ferramentas de terceiros que você pode executar.

Nomad x Kubernetes: tabela de resumo

RecursoNomadKubernetesInstalaçãoUm único binário pré-compiladoDiferentes binários para diferentes componentes e clientesEscalabilidadePode executar 10.000 nós e 2 milhões de contêineres5.000 nós e 300.000 contêineres no totalDesempenhoSimples e eficiente com uma pegada de recursos menorExtenso conjunto de recursos, mas usa mais recursosRedeConfiguração única com alocação dinâmica de portasControle refinado e faz não depende de portas dinâmicasRequisitosRequisitos de sistema mais baixos para clusters maioresUm cluster maior precisa de mais fontes de sistemaCodificaçãoTem uma ampla gama de integrações e ferramentas disponíveisPode usar linguagens existentes como YAML e JSONIntegraçãoTem boas integrações oficiais e de terceirosTem uma ampla gama de integrações e ferramentas disponíveisGUIBuilt- na interface da web disponívelPrecisa instalar separadamente

Escolha a plataforma certa para suas necessidades de orquestração

Entre Nomad e Kubernetes, a escolha de uma plataforma de orquestração depende de seus requisitos e prioridades específicos. Ambas as plataformas oferecem suporte a vários casos de uso – agendamento de implantação, implementações e recuperações automatizadas e descoberta e gerenciamento de cluster.

Se você prioriza a simplicidade e tem uma carga de trabalho pequena, o Nomad pode ser a melhor escolha para você. Com seu binário único e requisitos mínimos de recursos, o Nomad facilita a configuração e a operação. Além disso, você pode dimensionar seu cluster para dar suporte a um grande número de nós.

Por outro lado, se você precisar de recursos abrangentes, controle refinado e uma ampla gama de integrações, o Kubernetes é a sua resposta. Ele fornece uma solução robusta para cargas de trabalho em contêineres e pode ser perfeitamente integrado a diversas ferramentas e tecnologias. Você também pode aproveitar as soluções gerenciadas fornecidas pela AWS e Google Cloud.

Leve em consideração outras áreas como a necessidade de aprender uma nova linguagem (HCL) no caso do Nomad, enquanto as configurações do Kubernetes funcionam com YAML ou JSON. Além disso, você pode precisar de uma UI da Web para facilitar o uso.

Considere os recursos de sistema disponíveis e também os custos associados a eles. A escolha da sua plataforma de orquestração entre Nomad e Kubernetes deve ser baseada nas suas necessidades, experiência e recursos.

A seguir, confira as práticas recomendadas do Kubernetes para uma melhor orquestração de contêineres.