Agentic SOC Summit: o novo padrão para defesa autônomaInscreva-se

Os mecanismos de orquestração de containers (COEs) facilitam o gerenciamento de workloads em containers ao automatizar tarefas operacionais como agendamento, balanceamento de carga, escalonamento, rede, garantia de alta disponibilidade (HA) e gerenciamento de logs. O Kubernetes e o Apache Mesos são dois dos COEs mais populares.

Essas duas tecnologias adotam abordagens diferentes para o gerenciamento de containers. O Kubernetes funciona puramente como um orquestrador de containers. O Mesos é mais como um “sistema operacional para seu data center”.

Neste artigo, discutiremos o Kubernetes e o Mesos e compararemos suas principais funcionalidades. No entanto, começaremos apresentando os COEs e por que eles são essenciais para o gerenciamento de containers.

Por que você precisa de mecanismos de orquestração de containers?

A maioria das aplicações distribuídas hoje são criadas em containers. Os containers exigem menos recursos e ajudam a tornar o desenvolvimento de aplicações mais rápido e seguro.

Gerenciar dez ou vinte containers é bastante simples, mas uma equipe pode ficar sobrecarregada rapidamente quando o número de containers aumenta para centenas ou milhares em uma rede distribuída. Embora os containers sejam leves e de curta duração, operá-los em grandes grupos gera muitas peças móveis que precisam de coordenação simultânea.

Além disso, a maioria dos ambientes de containers de produção pode ser complexa. Eles podem executar vários sistemas operacionais (ou o mesmo sistema operacional com diferentes versões de kernel) e ter configurações complexas de rede e segurança. Ambientes multinuvem ou híbridos adicionam ainda mais complexidade à mistura.

É aqui que entram os COEs.

Os COEs simplificam e automatizam tarefas relacionadas ao gerenciamento de containers, e essas tarefas incluem:

  • Implementação
  • Balanceamento de carga
  • Agendamento de containers
  • Alocação de recursos
  • Monitoramento de desempenho
  • Configuração de redes

A automação torna muito mais fácil executar ambientes em containers de grande escala, liberando a equipe de DevOps para realizar tarefas de maior valor agregado.

Os COEs também garantem a disponibilidade da aplicação automatizando as verificações de integridade. O balanceamento de carga garante que as solicitações sejam roteadas automaticamente para instâncias de containers em boas condições, e o escalonamento automático garante que um número suficiente de containers esteja disponível para lidar com a carga atual.

Uma breve introdução ao Kubernetes e ao Mesos

O Kubernetes é o sistema de gerenciamento e orquestração de containers lançado pelo Google em 2014. Dada sua dependência do Docker, o Google desenvolveu o Kubernetes para implementar e agendar containers em escala, gerenciar recursos de cluster, implementar HA e rotear tráfego de aplicações.

Hoje, a maioria dos provedores de serviços de nuvem (incluindo os principais) oferece suporte ao Kubernetes e fornece infraestrutura e integrações para executar workloads hospedadas no Kubernetes.

Algumas das principais funcionalidades do Kubernetes incluem:

  • Escala automática
  • Orquestração de armazenamento
  • Gerenciamento de volume
  • Gerenciamento de segredos e configurações
  • Reversões automáticas
  • Execução em lote
  • Descoberta de serviço
  • Embalagem automática de bin

O Kubernetes também conta com forte suporte da comunidade DevOps, e muitos fornecedores oferecem aplicações gratuitas ou comerciais que adicionam funcionalidades extras ao Kubernetes.

O Mesos é um kernel distribuído que foi criado por estudantes de doutorado na UC Berkeley em 2009. Ele abstrai recursos de computação como CPU, memória e armazenamento de máquinas (físicas e virtuais) executadas em locações no local ou na nuvem. O kernel Mesos é executado em cada máquina em ambientes distribuídos, e workloads dentro e fora de containers podem usar a API Mesos para gerenciamento e agendamento de recursos.

Ao comparar o Mesos ao Kubernetes neste artigo, nós nos referiremos ao Mesos e ao Marathon. O Marathon é um plugin para o DC/OS (Data Center Operating System, Sistema Operacional de Data Center) da Mesosphere e Apache Mesos, permitindo que os usuários gerenciem containers facilmente.

As funcionalidades da combinação entre Mesos e Marathon incluem:

  • APIs
  • Escalabilidade linear
  • Isolamento plugável
  • Suporte multiplataforma
  • Agendamento de dois níveis
  • Tolerância a falhas
  • Mestre replicado usando ZooKeeper
  • Suporte multilíngue

O Mesos é uma escolha popular entre gigantes da tecnologia como Twitter, Netflix e Airbnb.

Kubernetes e Mesos: comparação de funcionalidades

Ao avaliar uma plataforma COE, alguns dos fatores mais importantes a serem considerados são alta disponibilidade, balanceamento de carga, escalonamento automático, armazenamento e rede.

Alta disponibilidade

Os pods do Kubernetes podem ser replicados em vários nós (VMs e servidores físicos) para garantir que a aplicação permaneça online mesmo se um dos nós do cluster falhar.

O painel de controle do Kubernetes gerencia os pods e os nós de trabalho no cluster, e faz isso com base na integridade do nó. O Kubernetes cuida do agendamento, bem como da detecção e resposta a falhas. Você pode tornar o Kubernetes altamente disponível implementando uma topologia etcd empilhada ou externa com vários componentes de arquitetura principais (por exemplo, vários mestres ou réplicas etcd).

Para o Mesos, as aplicações são executadas em clusters com vários agentes do Mesos para aumentar a disponibilidade. Você pode tornar o Mesos altamente disponível implementando de três a cinco mestres, um líder e o restante dos nós como backups. O Apache ZooKeeper elege o líder e detecta automaticamente os drivers mestres, escravos e agendadores.

Balanceamento de carga

O Kubernetes expõe pods externamente usando “serviços” (um grupo de pods sob um nome comum). Isso permite que os serviços se descubram dinamicamente sem exigir endereços IP codificados. Os serviços coordenam conexões com pods para fornecer recursos de balanceamento de carga.

Você pode implementar diferentes estratégias de balanceamento de carga com o Kubernetes, incluindo:

  • Round-robin
  • Balanceamento de carga round-robin do Kube-proxy L4
  • Balanceamento de carga round-robin L7
  • Hash consistente/Anel hash

O Mesos-DNS fornece serviços básicos de balanceamento de carga para sua aplicação. Ele gera registros SRV para cada tarefa do Mesos e os traduz para o endereço IP e a porta corretos na máquina da aplicação. Você também pode usar o Marathon-lb para facilitar o balanceamento de carga.

O Mesos suporta funcionalidades avançadas, como:

  • Pontas pegajosas
  • Descarregamento de SSL
  • Balanceamento de carga baseado em VHost, para que você possa especificar VMs individuais para sua aplicação

Escala automática

O Kubernetes permite que você defina um número alvo de pods usando implementações. Para acionar a escala automática, você também pode definir limites de métricas de recursos, como utilização de CPU ou memória.

O Mesos monitora continuamente o número de containers e agenda um container em outro nó escravo se ele falhar. Ele não oferece suporte nativo à escala automática usando métricas de recursos, mas há alguns componentes com suporte da comunidade.

Armazenamento

O Kubernetes oferece suporte a volumes efêmeros e não persistentes, como emptyDir, configMap, backwardAPI e CSI ephemeral para armazenamento de curto prazo.

Ele também oferece suporte a armazenamento persistente (arquivo ou bloco), incluindo iSCSI, NFS, FC e armazenamento em nuvem, como aqueles disponíveis na AWS ou no Azure. As aplicações executadas em containers hospedados no Kubernetes não se comunicam diretamente com o armazenamento, pois o Kubernetes abstrai a camada.

O Mesos oferece suporte ao armazenamento local persistente em recursos reservados para aplicações com estado. Os containers devem ser executados no mesmo nó porque os volumes são criados localmente no nó.

O Mesos oferece suporte a armazenamento externo persistente, mas ignorar o gerenciamento de recursos torna o controle de cotas, a reserva e o compartilhamento justo difíceis de aplicar.

Networking

O Kubernetes aloca IPs exclusivos para pods, eliminando a necessidade de mapear portas de container para a porta do host. Ele opera uma rede plana, com uma rede para pods e outra para serviços. Os pods podem se comunicar livremente com outros pods e serviços. As tabelas de IP controlam a conectividade entre pods e lidam com a maioria das regras de rede e encaminhamento de portas.

O Mesos suporta dois tipos de rede: IP-por-container e mapeamento de porta de rede. Os containers não recebem seus IPs por padrão, mas usar a integração Calico dá a cada container do Mesos o seu próprio IP. Isso evita conflitos de porta, elimina a necessidade de atribuição dinâmica de porta e permite a descoberta de serviço baseada no registro A do DNS. Os containers não conseguem se comunicar entre si em um host local.

Registre tudo, responda a qualquer coisa – de graça

Falcon LogScale Community Edition (anteriormente Humio) oferece uma plataforma moderna e gratuita de gerenciamento de log para a nuvem. Aproveite a ingestão de dados de streaming para obter visibilidade instantânea em sistemas distribuídos e prevenir e resolver incidentes.

O Falcon LogScale Community Edition, disponível instantaneamente sem nenhum custo, inclui o seguinte:

  • Ingestão de até 16 GB por dia
  • Retenção de 7 dias
  • Não é necessário cartão de crédito
  • Acesso contínuo sem período de teste
  • Registro sem índice, alertas em tempo real e painéis ao vivo
  • Acesso ao nosso marketplace e pacotes, incluindo guias para criar novos pacotes
  • Aprendizado e colaboração com uma comunidade ativa

Início gratuito

Arfan Sharif é líder de marketing de produtos para o portfólio de observabilidade na CrowdStrike. Ele tem mais de 15 anos de experiência em gerenciamento de log, ITOps, observabilidade, segurança e soluções de CX para empresas como Splunk, Genesys e Quest Software. Arfan formou-se em Ciência da Computação na Universidade Bucks and Chilterns e sua carreira abrange as áreas de Marketing de Produtos e Engenharia de Vendas.