Files
K3S/docs/storage.md
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

199 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Хранилище
Доступные варианты storage: NFS, Longhorn, MinIO, CSI S3, Rook-Ceph, GlusterFS.
## NFS (по умолчанию)
NFS сервер на master01 + CSI Driver для динамических PVC. StorageClass `nfs-master01` (default).
```yaml
addon_nfs_server: true # если NFS не установлен основным плейбуком
addon_csi_nfs: true
```
```yaml
# PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-data
spec:
accessModes: [ReadWriteMany]
storageClassName: nfs-master01
resources:
requests:
storage: 10Gi
```
Подробнее: [addons/nfs-server/README.md](../addons/nfs-server/README.md), [addons/csi-nfs/README.md](../addons/csi-nfs/README.md).
---
## Longhorn — distributed block storage
Реплицированное блочное хранилище. Хранит данные на дисках нод. Снимки, live migration.
```yaml
addon_longhorn: true
longhorn_default_replica_count: 2
```
```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: db-data
spec:
accessModes: [ReadWriteOnce]
storageClassName: longhorn
resources:
requests:
storage: 20Gi
```
Подробнее: [addons/longhorn/README.md](../addons/longhorn/README.md).
---
## MinIO — объектное хранилище S3
S3-совместимый сервер для хранения объектов. Используется как backend для Loki, Velero, CSI S3, Databasus.
```yaml
addon_minio: true
minio_mode: "standalone" # или distributed (требует 4+ нод)
minio_storage_size: "50Gi"
```
Endpoint: `http://minio.minio.svc.cluster.local:9000`
Подробнее: [addons/minio/README.md](../addons/minio/README.md).
---
## CSI S3 Driver — S3 как PVC
Монтирует S3/MinIO бакеты как PersistentVolume. Автоматически подключается к MinIO при `addon_minio: true`.
```yaml
addon_csi_s3: true
addon_minio: true
```
```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: s3-storage
spec:
accessModes: [ReadWriteMany]
storageClassName: csi-s3
resources:
requests:
storage: 100Gi
```
Подробнее: [addons/csi-s3/README.md](../addons/csi-s3/README.md).
---
## Rook-Ceph — distributed storage
Block (RWO) + Filesystem (RWX) storage через Ceph. Требует минимум 3 ноды с незанятыми дисками.
```yaml
addon_csi_ceph: true
rook_ceph_mon_count: 3
rook_ceph_block_replica_count: 3
```
StorageClasses:
- `rook-ceph-block` — ReadWriteOnce (БД)
- `rook-ceph-filesystem` — ReadWriteMany (общие файлы)
Подробнее: [addons/csi-ceph/README.md](../addons/csi-ceph/README.md).
---
## CSI GlusterFS
Внешний GlusterFS кластер + Heketi как PVC в кластере.
```yaml
addon_csi_glusterfs: true
csi_glusterfs_heketi_url: "http://192.168.1.20:8080"
```
Подробнее: [addons/csi-glusterfs/README.md](../addons/csi-glusterfs/README.md).
---
## Сравнение вариантов
| StorageClass | Тип | RWO | RWX | Особенности |
|---|---|---|---|---|
| `nfs-master01` | NFS | ✓ | ✓ | По умолчанию, просто |
| `longhorn` | Block | ✓ | ✗ | Реплики, снимки, migration |
| `csi-s3` | Object | ✓ | ✓ | FUSE, S3-совместимый |
| `rook-ceph-block` | Block | ✓ | ✗ | Производительность, надёжность |
| `rook-ceph-filesystem` | FS | ✓ | ✓ | CephFS, POSIX |
| `glusterfs` | FS | ✓ | ✓ | Внешний GlusterFS |
### Рекомендации по выбору
- **Для большинства приложений** — NFS (простота, RWX, работает из коробки)
- **Для баз данных** — Longhorn или Rook-Ceph block (RWO, производительность)
- **Для больших файлов / медиа** — MinIO + CSI S3
- **Для production-кластера с несколькими нодами** — Rook-Ceph
- **Для совместного доступа** — NFS, Rook-Ceph filesystem
---
## Резервное копирование PVC
### Через Velero
```yaml
addon_velero: true
velero_schedule_cron: "0 2 * * *"
```
```bash
velero backup create my-backup --include-namespaces my-app
velero restore create --from-backup my-backup
```
### Через Longhorn UI
Longhorn → Volumes → Take Snapshot → Create Backup (→ S3)
---
## Статический PV (без StorageClass)
```yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: static-nfs-pv
spec:
capacity:
storage: 50Gi
accessModes: [ReadWriteMany]
nfs:
server: "192.168.1.10"
path: "/storage/nfs/static"
persistentVolumeReclaimPolicy: Retain
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: static-pvc
spec:
accessModes: [ReadWriteMany]
resources:
requests:
storage: 50Gi
volumeName: static-nfs-pv
```