Files
K3S/addons/longhorn
Sergey Antropoff eccc1c2a01 docs: полная документация проекта — docs/ и README.md для каждого аддона
- README.md: перепиcан как компактный обзор (98 строк) с навигацией по docs/
- docs/: 13 файлов — getting-started, architecture, configuration, addons,
  storage, security, cicd, observability, networking, operations,
  make-reference, molecule-testing, troubleshooting
- addons/*/README.md: 31 новый файл — описание, параметры, примеры кода
  для каждого из 34 аддонов (vault и external-secrets уже существовали)
2026-04-26 00:22:06 +03:00
..
2026-04-24 21:01:26 +03:00

Longhorn

Distributed block storage для Kubernetes. Хранит данные реплицированно на дисках нод кластера. Поддерживает снимки, резервное копирование в S3/NFS, live migration томов.

Быстрый старт

# group_vars/all/addons.yml
addon_longhorn: true
make addon-longhorn

Параметры

Переменная Умолч. Описание
longhorn_default_replica_count 2 Количество реплик по умолчанию
longhorn_data_path /var/lib/longhorn Путь данных на нодах
longhorn_storage_class_default false Сделать default StorageClass
longhorn_ingress_enabled false UI через Ingress

Использование в PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: db-data
spec:
  accessModes: [ReadWriteOnce]
  storageClassName: longhorn
  resources:
    requests:
      storage: 10Gi

Настройка реплик для конкретного PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: critical-data
  annotations:
    longhorn.io/numberOfReplicas: "3"
spec:
  accessModes: [ReadWriteOnce]
  storageClassName: longhorn
  resources:
    requests:
      storage: 20Gi

UI через Ingress

longhorn_ingress_enabled: true
longhorn_ingress_host: "longhorn.example.com"
longhorn_ingress_tls: true

Резервное копирование в MinIO

В Longhorn UI → Settings → Backup Target:

s3://longhorn-backup@us-east-1/

Secret:

kubectl create secret generic longhorn-backup-secret \
  --from-literal=AWS_ACCESS_KEY_ID=minioadmin \
  --from-literal=AWS_SECRET_ACCESS_KEY=changeme \
  --from-literal=AWS_ENDPOINTS=http://minio.minio.svc.cluster.local:9000 \
  -n longhorn-system

Исключить ноду из storage (RPi)

kubectl label node rpi01 node.longhorn.io/create-default-disk=false

Диагностика

kubectl get pods -n longhorn-system
kubectl get pv,pvc -A
# Longhorn API:
kubectl -n longhorn-system port-forward svc/longhorn-frontend 8080:80