Какие типы volume существуют?

Коротко — volume в Kubernetes бывают разных «видов» (types) и их удобно разбить на группы по назначению и жизненному циклу: эпемерные (временные), конфигурационные/секретные, локальные (нода-привязанные) и сетевые/персистентные. Ниже перечислены основные типы и кратко описано, когда их используют и какие есть ограничения.

Эфемерные (временные) тома

  • emptyDir — создаётся при старте Pod на ноде, доступен всем контейнерам в Pod, удаляется при завершении Pod. Можно задать emptyDir.medium: "Memory" для tmpfs (RAM).

  • ephemeral CSI volume — временные тома, создаваемые через CSI-драйверы прямо в spec контейнера; полезно для быстрых временных хранилищ с бекендом.

Конфигурация и секреты

  • configMap — монтирует ключи как файлы или предоставляет в виде переменных окружения; для конфигураций, которые можно менять отдельно от образа.

  • secret — монтирует секретные данные (пароли, токены) как файлы или env-переменные; имеет опции управления правами.

  • downwardAPI — предоставляет метаданные Pod (имя, namespace, labels, ресурсы) как файлы/переменные.

  • projected — объединяет несколько источников (configMap, secret, downwardAPI, serviceAccountToken) в один том.

Локальные (нода-привязанные)

  • hostPath — монтирует путь с ноды в контейнер; даёт прямой доступ к файловой системе ноды (опасно и неносимо).

  • local (Local PersistentVolumes) — предоставляет локальные диски/путь как PV; сохраняет данные на конкретной ноде, используется через PVC, но не перемещается между нодами.

Сетевые файловые и блочные хранилища (персистентные)

  • persistentVolumeClaim (PVC) — не конкретный тип хранилища, а запрос на хранилище; связывается с PersistentVolume (PV). Через PVC получают персистентное хранилище.

  • NFS — сетевой файловый том, доступен с нескольких нод (при правильной конфигурации).

  • iSCSI / FC (Fibre Channel) — блочные устройства, монтируются как блочные диски.

  • CephFS / RBD (Ceph) — файловая система (CephFS) или блочное устройство (RBD) из Ceph-кластера.

  • GlusterFS — распределённая файловая система.

  • SMB / CIFS — для доступа к SMB/Windows-шерингам (через соответствующий драйвер).

  • AzureDisk / AzureFile — встраиваемые типы для Azure: диск (блочный) и файловый шар.

  • awsElasticBlockStore (EBS) — блочное хранилище AWS (обычно ReadWriteOnce).

  • gcePersistentDisk (GCE PD) — блочное хранилище Google Cloud.

  • vSphereVolume — тома VMware vSphere.

  • Cinder (OpenStack) — тома OpenStack Cinder.

  • Другие провайдер-специфичные: Portworx, StorageOS, Quobyte, ScaleIO и т. п. — часто реализуются как CSI-драйверы.

CSI (Container Storage Interface)

  • CSI — современный плагинный интерфейс; большинство новых/внешних хранилищ подключаются через CSI-драйверы. CSI поддерживает динамическое выделение (StorageClass), снапшоты, расширение PVC и другие возможности. Рекомендуемый путь для интеграции внешних хранилищ.

Специальные и устаревшие

  • gitRepo — устаревший (не рекомендуется для продакшн).

  • Есть и другие in-tree плагины, но многие были/перемещаются в CSI.

Ключевые параметры, связанные с томами

  • AccessModes: ReadWriteOnce, ReadOnlyMany, ReadWriteMany — какие режимы доступа поддерживает том.

  • ReclaimPolicy: Delete / Retain — что происходит с физическим хранилищем после удаления PV.

  • subPath — монтаж части тома в контейнер.

  • readOnly — монтирование только для чтения.

С практической точки зрения: для конфигов/секретов используют configMap/secret, для временных задач — emptyDir, для персистентных данных — PVC+PV через StorageClass/CSI (NFS, облачные диски, Ceph и т.д.).