Обновление томов в сервисах YTsaurus

В этой статье описано, как изменить настройки томов для сервисов YTsaurus, запущенных в Kubernetes.

Важные особенности

При обновлении томов учитывайте следующее:

  1. Оператор не применяет обновления автоматически. Он не отслеживает изменения в конфигурации томов, поэтому изменение спецификации ресурса само по себе не запустит обновление.

  2. Persistent Volume Claims (PVC) привязаны к подам. Даже если удалить поды или StatefulSet, старые PVC останутся на месте. Они помешают применить новые настройки томов.

Важно

Описанные ниже действия приведут к потере данных на обновляемых томах, так как тома будут пересозданы заново. Будьте осторожны.

Порядок действий

Чтобы обновить настройки томов, выполните следующие шаги:

Шаг 1. Отключите оператор

В спецификации ресурса YTsaurus установите значение false для поля isManaged. Так вы остановите оператор, чтобы он не мешал вносить изменения вручную.

spec:
  isManaged: false

Примените это изменение в кластере.

Шаг 2. Удалите StatefulSet

Удалите StatefulSet того сервиса, тома которого вы обновляете:

kubectl delete statefulset <statefulset-name> -n <namespace>

Шаг 3. Удалите Persistent Volume Claims

Удалите PVC, связанные с подами:

kubectl delete pvc <pvc-name> -n <namespace>

Если у StatefulSet несколько реплик, удалите PVC для каждой из них. Найти нужные PVC можно командой:

kubectl get pvc -n <namespace>

Шаг 4. Включите оператор

Верните значение true для поля isManaged в спецификации ресурса YTsaurus:

spec:
  isManaged: true

Примените изменение. Теперь оператор пересоздаст StatefulSet и PVC уже с новыми настройками томов.

Пример: увеличение места для логов планировщика

Частая задача при работе с томами — увеличить место под логи. Допустим, нужно расширить хранилище логов для планировщиков с 10 ГБ до 50 ГБ.

  1. Укажите новый размер тома в спецификации ресурса YTsaurus:
spec:
  schedulers:
    volumeClaimTemplates:
      - spec:
          resources:
            requests:
              storage: 50Gi  # увеличили с 10Gi
  1. Выполните описанные выше шаги: установите isManaged: false, удалите StatefulSet и PVC, затем верните isManaged: true.

Важно

В результате этой операции текущие логи будут потеряны, так как старые PVC удаляются и создаются новые. Если логи нужно сохранить, сделайте резервную копию до начала обновления.