В руководстве по выбору минимально требуемого дискового пространства для различных типов узлов Deckhouse Platform (DP) указаны объёмы дисков, которые необходимо выделить для успешной установки и работы DP. Важно также корректно сконфигурировать файловую систему — иначе пространство может неожиданно закончиться даже при верно рассчитанном объёме на этапе установки.

Причина сбоев может крыться в поведении установщика дистрибутива Linux. Например, Astra Linux при установке может выделить 15 ГБ под корень файловой системы (/), 15 ГБ под домашний каталог пользователя (/home), а остальное оставить неразмеченным, несмотря на подключённый диск общим объёмом в 60 ГБ, рекомендуемых в руководстве. При такой конфигурации установка DP завершается ошибкой отсутствия требуемого дискового пространства.

Чтобы избежать проблем в будущем, перед установкой убедитесь, что разделы файловой системы диска, выделенного для машины, соответствуют требованиям DP по объёму.

Где и что хранит DP

DP размещает данные разных типов в определённых каталогах файловой системы. Ниже — краткий разбор ключевых каталогов:

  • /etc/kubernetes/, /etc/containerd и т. д. — каталоги с конфигурацией компонентов Kubernetes;
  • /var/lib/containerd — слои образов компонентов DP и прочих контейнеров на узле. Чем больше компонентов и контейнеров, тем больше свободного места требуется в каталоге.
  • /var/lib/kubelet — в этом каталоге хранится два типа информации:
    • данные о запущенных в кластере подах;
    • данные ephemeral-storage — например, если на master-узле запрашивается 7 ГБ под ephemeral-storage, и в этом каталоге места будет недостаточно, поды не будут запланированы на этот узел.
  • /var/lib/etcd — база данных etcd, в которой хранится необходимая для работы кластера Kubernetes информация;
  • /var/lib/deckhouse/downloaded/ — хранилище конфигураций релизов модулей DP (ModuleRelease);
  • /var/lib/deckhouse/stronghold/ — хранилище данных Stronghold (если включён соответствующий модуль);
  • /var/log/pods/ — хранилище логов подов;
  • /opt/deckhouse/ — служебные компоненты DP, такие как kubelet, containerd, статические утилиты (например, lsblk) и т. д.;
  • /opt/local-path-provisioner/ — каталог для хранения данных при использовании локального хранилища Local Path Provisioner. Каталог задаётся в обязательном параметре spec.path LocalPathProvisioner, примеры конфигурации используют /opt/local-path-provisioner.

Рекомендации по объёму дискового пространства

Ниже приведены ориентиры по объёму диска, который занимают разные компоненты кластера.

Суммарные значения из таблиц могут превышать минимально рекомендуемый объём диска для узла, указанный в «Быстром старте» или в руководстве «Подбор ресурсов для кластера на bare metal». Это связано с тем, что в таблицах приведены максимальные требования по компонентам, а в минимальных требованиях указан усреднённый объём для типового узла.

Master-узлы

В таблице представлены рекомендуемые объёмы пространства для каталогов, используемых DP на master-узлах кластера.

Каталог Объём диска, ГБ
/mnt/vector-data 1
/opt 1
/tmp 1
/var/lib 75
/var/log/kube-audit 2
/var/log/pods 18 (подробнее...)

Worker-узлы

В таблице представлены рекомендуемые объёмы пространства для каталогов, используемых DP на worker-узлах кластера.

Каталог Объём диска, ГБ
/mnt/vector-data 1
/opt 1
/opt/local-path-provisioner

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

100
/tmp 1
/var/lib 55
/var/log/pods 5 (подробнее...)

Системные узлы

Системные узлы (system-узел) — это узлы, на которых запускаются компоненты DP. При добавлении таких узлов в кластер учитывайте, что на них размещается нагрузка мониторинга, включая:

Если данные мониторинга хранятся локально на узлах, для каждого системного узла рекомендуется дополнительно выделить ≥ 100 ГБ свободного дискового пространства.

Если в кластере не используются выделенные системные узлы, указанная выше нагрузка будет распределена по другим узлам. Учтите рекомендуемые объёмы дискового хранилища при выборе их конфигурации.

Хранилище логов подов

Логи подов хранятся в каталоге /var/log/pods/. Объём, занимаемый логами, зависит от количества контейнеров и настроек DP. В среднем, на master-узле при использовании набора модулей Default работает около 90 контейнеров, По умолчанию для каждого контейнера хранится до 4 файлов логов размером до 50 МБ каждый, то есть до 200 МБ на контейнер. Соответственно, в каталоге /var/log/pods/ должно быть доступно как минимум 90 * 200 МБ = 18 ГБ места.

Параметры хранения логов можно переопределить в параметрах spec.kubelet.containerLogMaxSize и spec.kubelet.containerLogMaxFiles NodeGroup (подробнее — в разделе о настройке узлов). Значения по умолчанию:

spec:
  kubelet:
    containerLogMaxSize: 50Mi
    containerLogMaxFiles: 4

Хранилище баз уязвимостей Trivy

DP имеет встроенную систему сканирования образов на уязвимости на базе Trivy, которая сканирует все контейнерные образы, используемые в подах кластера. Для сканирования используются как публичные базы уязвимостей, так и обогащённые данные из Astra Linux, ALT Linux и РЕД ОС. Суммарный объём занимаемого базами дискового пространства составляет 5 ГБ, поэтому его необходимо учитывать при выборе конфигурации разделов диска.

Базы данных хранятся на системных узлах кластера, а в случае, если такие узлы в кластере отсутствуют, базы будут расположены на worker-узле.

Если настроены лимиты по ресурсам

Если для объектов кластера заданы лимиты на диск (квоты, ограничения на объём), требуемое свободное место всё равно должно быть физически доступно на узле. При его отсутствии произойдёт вытеснение нагрузки (eviction) с соответствующих узлов.

Локальное хранилище на основе LVM

В кластере DP можно настроить локальное хранилище на узлах с использованием LVM.

Требования и порядок размещения:

  • На узле должны быть доступны свободные блочные устройства (разделы диска).
  • Эти устройства будут задействованы модулем sds-local-volume для создания StorageClass.
  • Объём свободного пространства на блочном устройстве должен соответствовать объёму, который планируется предоставлять через создаваемый StorageClass.

Дополнительные ресурсы