Guia Completo para Instalar e Configurar o Longhorn no Kubernetes

Por Mizael Xavier
Guia Completo para Instalar e Configurar o Longhorn no Kubernetes

Introdução ao Longhorn: Armazenamento Distribuído para Kubernetes

O Longhorn é um sistema de armazenamento em bloco distribuído, nativo da nuvem e de código aberto, projetado especificamente para o Kubernetes. Desenvolvido inicialmente pela Rancher Labs e agora um projeto incubado pela Cloud Native Computing Foundation (CNCF), o Longhorn simplifica a complexidade do armazenamento persistente em ambientes Kubernetes. Ele oferece uma solução leve, confiável e fácil de usar, eliminando a necessidade de arrays de armazenamento externos caros e complexos.

Em clusters Kubernetes, especialmente aqueles não hospedados em nuvens públicas, a configuração de armazenamento replicado e persistente sempre foi um desafio para as equipes de ITOps e DevOps. O Longhorn surge como uma alternativa robusta, fornecendo armazenamento em bloco persistente, simplificado e de fácil implementação e atualização. Sua arquitetura é construída sobre e para o Kubernetes, utilizando seus primitivos e contêineres para orquestrar controladores de armazenamento dedicados e réplicas.

Principais Funcionalidades do Longhorn

O Longhorn se destaca por uma série de funcionalidades que o tornam uma escolha atraente para o armazenamento em Kubernetes:

  • Armazenamento Distribuído de Nível Empresarial: Oferece armazenamento em bloco persistente e altamente disponível para aplicações Kubernetes, sem um ponto único de falha.
  • Snapshots e Backups Incrementais: Permite a criação de snapshots e backups de forma incremental, garantindo a segurança dos dados do volume dentro ou fora do cluster Kubernetes. A interface de gerenciamento intuitiva e gratuita simplifica o agendamento de backups.
  • Recuperação de Desastres Cross-Cluster: Facilita a criação de volumes de recuperação de desastres em outros clusters Kubernetes, permitindo failover rápido em caso de emergência com RPO (Recovery Point Objective) e RTO (Recovery Time Objective) definidos.
  • Provisionamento Dinâmico (Thin Provisioning): Aloca espaço de armazenamento sob demanda, otimizando o uso dos recursos.
  • Expansão de Volume Sem Interrupção: Permite aumentar o tamanho dos volumes sem afetar as aplicações em execução.
  • Atualizações de Software Sem Interrupção: O software Longhorn pode ser atualizado sem interromper os volumes em execução.
  • Interface de Usuário (UI) e Integração com CLI Kubernetes: Oferece uma UI intuitiva para gerenciamento e integração completa com a linha de comando do Kubernetes (kubectl).
  • Suporte a RWX (ReadWriteMany): Requer a instalação de um cliente NFSv4 em cada nó para volumes com acesso ReadWriteMany.

Arquitetura do Longhorn

A arquitetura do Longhorn é composta por dois componentes principais: o Longhorn Manager e o Longhorn Engine.

  • Longhorn Manager: Atua como o plano de controle. É responsável por gerenciar a criação e o gerenciamento dos volumes no cluster Kubernetes e lida com as chamadas da API provenientes da UI ou dos plugins de volume. Os pods do Longhorn Manager são executados em cada nó do cluster.
  • Longhorn Engine: Corresponde ao plano de dados. Para cada volume, o Longhorn cria um controlador de armazenamento dedicado (Engine) e replica sincronicamente esse volume através de múltiplas réplicas armazenadas em diferentes nós. O Engine é responsável por fornecer a interface de armazenamento para os pods.
  • Réplicas: As réplicas armazenam os dados do volume e cada uma contém uma cópia completa dos dados. O número de réplicas por volume é configurável, assim como os nós onde elas serão agendadas. O Longhorn monitora a saúde de cada réplica e realiza reparos, reconstruindo-as quando necessário.

Essa arquitetura garante que, mesmo em caso de falha de um nó, os dados permaneçam acessíveis a partir de outras réplicas em nós saudáveis.

Pré-requisitos para Instalação do Longhorn

Antes de iniciar a instalação do Longhorn, é crucial garantir que o ambiente Kubernetes atenda aos seguintes requisitos em cada nó do cluster:

  • Runtime de Contêiner Compatível: Docker v1.13+, containerd v1.3.7+ ou similar.
  • Versão do Kubernetes: >= v1.25.
  • Instalação do open-iscsi: O `open-iscsi` deve estar instalado e o daemon `iscsid` deve estar em execução em todos os nós. O Longhorn depende do `iscsiadm` no host para fornecer volumes persistentes ao Kubernetes.
  • Cliente NFSv4 (para suporte RWX): Se você planeja usar volumes ReadWriteMany (RWX), cada nó deve ter um cliente NFSv4 instalado.
  • Sistema de Arquivos com Suporte a Extensões: O sistema de arquivos do host deve suportar o recurso de extensões de arquivo. Atualmente, ext4 e XFS são suportados.
  • Utilitários Essenciais: `bash`, `curl`, `findmnt`, `grep`, `awk`, `blkid`, `lsblk` devem estar instalados.
  • Propagação de Montagem Habilitada: A propagação de montagem deve estar habilitada no cluster Kubernetes. Se o cluster foi provisionado pelo Rancher v2.0.7 ou posterior, este recurso geralmente está habilitado por padrão.
  • Execução como Root: As cargas de trabalho do Longhorn precisam ser executadas como root para uma implantação e operação adequadas.
  • Hardware Mínimo Recomendado: Consulte as melhores práticas do Longhorn para obter as recomendações de hardware.
  • Configurações Específicas do SO/Distribuição: Algumas distribuições ou ambientes Kubernetes podem exigir configurações adicionais, como GKE (Google Kubernetes Engine), K3s, RKE com CoreOS, OCP/OKD, Talos Linux e Container-Optimized OS.

É altamente recomendável executar o script de verificação de ambiente do Longhorn para identificar potenciais problemas antes da instalação.

Como Instalar o Longhorn

O Longhorn pode ser instalado em um cluster Kubernetes de diversas maneiras, incluindo:

A instalação via Helm é uma abordagem comum e simplificada. Geralmente, envolve a adição do repositório Helm do Longhorn e a instalação do chart com um comando. Por exemplo, para instalar o Longhorn usando Helm e criar um namespace dedicado `longhorn-system`:


helm repo add longhorn https://charts.longhorn.io
helm repo update
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace

Durante a implantação, especialmente em provedores de nuvem como o Oracle Container Engine for Kubernetes (OKE), pode ser necessário definir configurações específicas, como `defaultSettings.createDefaultDiskLabeledNodes=true`, para que o Longhorn utilize discos anexados automaticamente.

Para ambientes air-gapped (sem acesso à internet), o Longhorn também oferece instruções específicas de instalação.

Como Configurar o Longhorn Após a Instalação

Após a instalação bem-sucedida do Longhorn, algumas etapas de configuração são essenciais para otimizar seu uso e garantir a funcionalidade completa.

Acesso à Interface de Usuário (UI) do Longhorn

O Longhorn possui uma interface gráfica do usuário (UI) que facilita o gerenciamento de volumes, snapshots, backups e outras configurações. Para acessar a UI, geralmente é necessário expor o serviço `longhorn-frontend` através de um Ingress Controller. Se você estiver usando o Rancher, ele pode fornecer acesso direto à UI do Longhorn.

A criação de um recurso Ingress permitirá o acesso à UI do Longhorn através de um nome de host configurado.

Configuração de Discos Padrão

O Longhorn precisa saber quais discos nos nós do Kubernetes ele pode utilizar para armazenar os dados das réplicas. Isso pode ser configurado através de anotações e rótulos nos nós do Kubernetes ou através das configurações do Longhorn. Por exemplo, você pode especificar caminhos de disco padrão e permitir o agendamento em nós específicos.

O diretório `/var/lib/longhorn/` é frequentemente usado como o caminho padrão para armazenar os dados do Longhorn e os binários do engine.

Criação de StorageClasses

O Longhorn instala uma StorageClass padrão chamada `longhorn`. No entanto, você pode criar StorageClasses personalizadas para definir parâmetros específicos para diferentes tipos de volumes, como o número de réplicas, políticas de snapshot, entre outros. Isso permite que os desenvolvedores solicitem armazenamento persistente (PersistentVolumeClaims - PVCs) especificando a StorageClass desejada, e o Longhorn provisionará o volume conforme definido.

Configuração de Backups para Armazenamento Externo

Uma das funcionalidades mais poderosas do Longhorn é a capacidade de realizar backups para armazenamentos externos, como Amazon S3, NFSv4 ou qualquer armazenamento compatível com S3 (por exemplo, OCI Object Storage). Para configurar backups, você precisará fornecer as credenciais e o endpoint do seu provedor de armazenamento de backup nas configurações do Longhorn. Isso é crucial para a recuperação de desastres e para proteger seus dados contra perdas.

É possível agendar backups recorrentes diretamente pela UI do Longhorn.

Monitoramento com Prometheus e Grafana

O Longhorn expõe métricas que podem ser coletadas pelo Prometheus e visualizadas no Grafana. A Grafana Labs oferece um dashboard de exemplo para monitorar o sistema de armazenamento Longhorn. Para habilitar o monitoramento, geralmente é necessário configurar um ServiceMonitor para o Prometheus e adicionar regras de alerta (PrometheusRules).

Melhores Práticas ao Utilizar o Longhorn

Para garantir um desempenho ideal, confiabilidade e facilidade de gerenciamento com o Longhorn, considere as seguintes melhores práticas:

  • Isolamento de Tráfego de Replicação: Para clusters com alta demanda de I/O, considere configurar uma rede de armazenamento dedicada para o tráfego de replicação do Longhorn. Isso pode melhorar a largura de banda e o desempenho da rede para as réplicas.
  • Número de Réplicas: Configure o número de réplicas de acordo com suas necessidades de disponibilidade e durabilidade. O padrão geralmente é três réplicas.
  • Gerenciamento de Nós: Monitore a saúde e os recursos dos nós do Kubernetes que hospedam as réplicas do Longhorn. Evite sobrecarregar os nós com muitas réplicas.
  • Atualizações Regulares: Mantenha o Longhorn atualizado com as últimas versões para se beneficiar de novas funcionalidades, melhorias de desempenho e correções de segurança.
  • Testes de Recuperação: Realize testes periódicos de restauração de backups e failover para garantir que seus planos de recuperação de desastres funcionem conforme o esperado.
  • Limpeza de Snapshots e Backups: Gerencie o ciclo de vida de snapshots e backups para evitar o consumo excessivo de espaço de armazenamento. O Longhorn permite configurar políticas de retenção.

Conclusão sobre a Instalação e Configuração do Longhorn

O Longhorn se estabeleceu como uma solução de armazenamento distribuído robusta e amigável para ambientes Kubernetes. Sua facilidade de instalação, gerenciamento intuitivo e um conjunto rico de funcionalidades, como snapshots, backups e recuperação de desastres, o tornam uma excelente escolha para equipes que buscam simplificar o armazenamento persistente para suas aplicações conteinerizadas. Ao seguir os pré-requisitos corretos, um processo de instalação adequado e as melhores práticas de configuração, o Longhorn pode fornecer uma base de armazenamento confiável e escalável para suas cargas de trabalho Kubernetes.

Mizael Xavier

Mizael Xavier

Desenvolvedor e escritor técnico

Ver todos os posts

Compartilhar: