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:
- Rancher catalog app
- `kubectl apply`
- Helm
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.
