Что такое Longhorn?

Longhorn — это распределённая блочная система хранения, созданная специально для Kubernetes. Разработана Rancher Labs и обеспечивает высокодоступное хранилище на базе обычных интерфейсов Kubernetes.

Основные особенности

  • Нативно для Kubernetes
  • Высокая доступность за счёт репликации
  • Интерфейс управления (UI/CLI)
  • Снапшоты и резервные копии
  • Простая установка

Зачем использовать Longhorn?

Kubernetes не управляет хранилищем сам по себе — он использует CSI-драйверы. Longhorn — это лёгкое, открытое и надёжное решение, которое позволяет:

  • Автоматически создавать тома
  • Делать резервные копии
  • Обеспечивать отказоустойчивость
  • Легко восстанавливать данные

Установка Longhorn

Требования

  • Кластер Kubernetes (версии 1.20+)
  • Установлен Helm 3
  • Открыты порты 9500, 9501, 3260 на всех узлах

Установка с помощью Helm

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

Доступ к интерфейсу Longhorn

kubectl port-forward service/longhorn-frontend 8080:80 -n longhorn-system

Откройте http://localhost:8080

Использование в приложениях

  1. Создание StorageClass (опционально)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: longhorn
provisioner: driver.longhorn.io
reclaimPolicy: Retain
  1. Создание PVC
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: longhorn
  resources:
    requests:
      storage: 2Gi
  1. Монтирование в Deployment
volumeMounts:
  - name: data
    mountPath: /data
volumes:
  - name: data
    persistentVolumeClaim:
      claimName: my-pvc

Плюсы и минусы

✅ Плюсы

  • Простота в установке и использовании
  • UI/CLI/API
  • Поддержка бэкапов и снапшотов
  • Открытый код

❌ Минусы

  • Скорость ниже, чем у локальных дисков
  • Поддерживаются не все возможности CSI
  • Дополнительные компоненты увеличивают сложность

Заключение

Longhorn — отличное решение для хранения данных в Kubernetes-кластере. Особенно подойдёт DevOps-командам, которым нужно надёжное и простое в управлении блочное хранилище с высокой доступностью.