Снапшоты
Снапшот (снимок) — копия содержимого постоянного тома (Persistent Volume / PVC) в определённый момент времени без создания нового тома. Снапшоты создаются средствами хранилища через совместимые CSI-драйверы и используются для быстрого отката данных, клонирования томов и точек восстановления перед рискованными операциями (например, резервная копия перед обновлением БД).
В платформе «Штурвал» поддержка снапшотов обеспечивается оператором shturval-snapshotter (CSI Snapshotter). Оператор критически важен для работы платформы (отключить его нельзя); по умолчанию он устанавливается во включённом состоянии в клиентские кластеры и в кластер управления. Подробнее о сервисе — shturval-snapshotter.
Для чего нужны снапшоты
-
Точка восстановления — перед обновлением приложения, миграцией БД или массовыми изменениями данных можно создать снапшот и при необходимости откатиться к нему.
-
Клонирование тома — из снапшота можно создать новый PVC с теми же данными (копирование без выноса данных из системы хранения).
-
Краткосрочное резервирование — быстрый «снимок» на той же платформе хранения без копирования в внешнее хранилище.
Снапшоты не заменяют полноценное резервное копирование кластера и данных во внешнее хранилище. О различиях снапшотов и бэкапов см. Чем отличаются бэкапы и снапшоты.
Объекты Kubernetes для снапшотов
Оператор snapshotter вводит в кластере CRD (Custom Resource Definitions):
| Объект | Описание |
|---|---|
| VolumeSnapshotClass | Класс снимков: задаёт атрибуты для создания снапшотов; основной параметр — используемый CSI-драйвер (аналог StorageClass для снапшотов). |
| VolumeSnapshotContent | Фактическое содержимое снапшота в системе хранения, связанное с объектом VolumeSnapshot (часто создаётся автоматически). |
| VolumeSnapshot | Объект в Kubernetes, описывающий снимок PVC — запрос на снимок конкретного тома в неймспейсе. |
Типичный сценарий: пользователь создаёт VolumeSnapshot, указывая источник (PVC) и при необходимости VolumeSnapshotClass. Контроллер snapshotter создаёт снимок через CSI-драйвер и при успехе создаёт или обновляет VolumeSnapshotContent. По готовности снапшота из него можно создать новый PVC (клонирование).
Поддержка снапшотов CSI-драйверами
Снапшоты используются с совместимыми CSI-драйверами. В платформе «Штурвал» снапшоты поддерживают следующие CSI-модули:
| Тип хранилища | CSI / модуль | Поддержка снапшотов |
|---|---|---|
| Локальное (RawFile) | shturval-local-csi | Да |
| Ceph RBD / CephFS | shturval-ceph-rbd / shturval-ceph-cephfs | Да |
| VMware vSphere | shturval-capvs-csi | Да* |
* Для VMware vSphere учётной записи vCenter нужны назначенные роли и разрешения (в том числе для CSI и снапшотов томов). См. требования к учётной записи VMware vSphere.
Перед использованием снапшотов убедитесь, что в кластере включены CRD оператора snapshotter (shturval-snapshotter-crds) и Оператор snapshotter (shturval-snapshotter), а также соответствующий CSI-модуль для вашего типа томов. Сначала должны быть развёрнуты CRD, затем оператор. VolumeSnapshotClass должен указывать на driver, совместимый с вашим StorageClass.
Где управлять снапшотами
- Состояние оператора: Сервисы и репозитории → Установленные сервисы → найдите Оператор snapshotter (
shturval-snapshotter) → Управлять. - Объекты снапшотов (CR): выберите кластер → Администрирование → Кастомные ресурсы. В поле поиска можно ввести, например,
snap— в списке останутся CRD, связанные со снапшотами томов.

На странице Кастомные ресурсы в таблице отображаются API группа, кастомный ресурс и количество ресурсов в кластере. Для снапшотов отдельных томов используется группа snapshot.storage.k8s.io — VolumeSnapshot, VolumeSnapshotClass, VolumeSnapshotContent. Группа groupsnapshot.storage.k8s.io содержит типы для групповых снапшотов: VolumeGroupSnapshot, VolumeGroupSnapshotClass, VolumeGroupSnapshotContent. Нажмите на название ресурса в таблице, чтобы открыть список его экземпляров и выполнить создание или просмотр. Доступны сортировка, фильтр по API-группе и сброс фильтров (Очистить все фильтры).
Ограничения и рекомендации
-
Снапшот фиксирует состояние тома на момент создания. Данные, записанные после создания снапшота, в снимок не попадают.
-
Для консистентности данных приложений (например, БД) перед созданием снапшота рекомендуется согласованно останавливать запись или использовать механизмы приложения (например, flush, freeze).
-
Хранение снапшотов потребляет место в той же системе хранения; длительное хранение большого числа снапшотов может быть ограничено квотами и политиками провайдера.
-
Удаление PVC с существующими снапшотами может быть запрещено или требовать предварительного удаления снапшотов — зависит от политики reclaim и реализации драйвера.