Снапшоты

Снапшот (снимок) — копия содержимого постоянного тома (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.ioVolumeSnapshot, VolumeSnapshotClass, VolumeSnapshotContent. Группа groupsnapshot.storage.k8s.io содержит типы для групповых снапшотов: VolumeGroupSnapshot, VolumeGroupSnapshotClass, VolumeGroupSnapshotContent. Нажмите на название ресурса в таблице, чтобы открыть список его экземпляров и выполнить создание или просмотр. Доступны сортировка, фильтр по API-группе и сброс фильтров (Очистить все фильтры).

Ограничения и рекомендации

  • Снапшот фиксирует состояние тома на момент создания. Данные, записанные после создания снапшота, в снимок не попадают.

  • Для консистентности данных приложений (например, БД) перед созданием снапшота рекомендуется согласованно останавливать запись или использовать механизмы приложения (например, flush, freeze).

  • Хранение снапшотов потребляет место в той же системе хранения; длительное хранение большого числа снапшотов может быть ограничено квотами и политиками провайдера.

  • Удаление PVC с существующими снапшотами может быть запрещено или требовать предварительного удаления снапшотов — зависит от политики reclaim и реализации драйвера.