В гайде по выбору минимально требуемого дискового пространства для различных типов узлов Deckhouse Kubernetes Platform (DKP) указаны объемы дисков, которые необходимо выделить для успешной установки и работы DKP. Важно также корректно сконфигурировать файловую систему — иначе пространство может неожиданно закончиться даже при верно рассчитанном объёме на этапе установки.
Причина сбоев может крыться в поведении установщика дистрибутива Linux. Например, Astra Linux при установке может выделить 15 ГБ под корень файловой системы (/), 15 ГБ под домашний каталог пользователя (/home), а остальное оставить неразмеченным, несмотря на подключённый диск общим объемом в 60 ГБ, рекомендуемых в гайде. При такой конфигурации установка DKP завершается ошибкой отсутствия требуемого дискового пространства.
Чтобы избежать проблем в будущем, перед установкой лучше убедиться, что разделы файловой системы диска, выделенного для машины, соответствуют требованиям DKP по объёму.
Где и что хранит DKP
DKP размещает данные разных типов в определённых каталогах файловой системы. Ниже — краткий разбор ключевых каталогов:
- /etc/kubernetes/,- /etc/containerdи т.д. — каталоги с конфигурацией компонентов Kubernetes;
- /var/lib/containerd— слои образов компонентов DKP и прочих контейнеров на узле. Чем больше компонентов и контейнеров, тем больше свободного места требуется в каталоге.
- /var/lib/kubelet— в этом каталоге хранится два типа информации:- данные о запущенных в кластере подах;
- данные ephemeral-storage— например, если на master-узле запрашивается 7 ГБ подephemeral-storage, и в этом каталоге места будет недостаточно, поды не будут запланированы на этот узел.
 
- /var/lib/etcd— база данных etcd, в которой хранится необходимая для работы кластера Kubernetes информация;
- /var/lib/deckhouse/downloaded/— хранилище конфигураций релизов модулей Deckhouse DKP (ModuleRelease);
- /var/lib/deckhouse/stronghold/— хранилище данных Stronghold (если включён соответствующий модуль);
- /var/log/pods/— хранилище логов подов;
- /opt/deckhouse/— служебные компоненты DKP, такие как kubelet, containerd, статические утилиты (например,- lsblk) и т.д.;
- /opt/local-path-provisioner/— каталог для хранения данных при использовании локального хранилища Local Path Provisioner (может быть переопределён в конфигурации).
Рекомендации по объёму дискового пространства
Ниже приведены ориентиры по объёму диска, который занимают разные компоненты кластера.
Суммарные значения из таблиц могут превышать минимально рекомендуемый объём диска для узла, указанный в «Быстром старте» или «Требованиях к кластеру на bare metal». Это связано с тем, что в таблицах приведены максимальные требования по компонентам, а в минимальных требованиях указан усреднённый объём для типового узла.
Master-узлы
В таблице представлены рекомендуемые объёмы пространства для каталогов, используемых DKP на master-узлах кластера.
| Каталог | Объем диска, ГБ | 
|---|---|
| /mnt/vector-data | 1 | 
| /opt | 1 | 
| /tmp | 1 | 
| /var/lib | 75 | 
| /var/lib/containerd | 30 | 
| /var/lib/deckhouse | 5 | 
| /var/lib/etcd | 10 | 
| /var/lib/kubelet | 25 | 
| /var/lib/upmeter | 5 | 
| /var/log/kube-audit | 2 | 
| /var/log/pods | 5 (подробнее...) | 
Worker-узлы
В таблице представлены рекомендуемые объёмы пространства для каталогов, используемых DKP на worker-узлах кластера.
| Каталог | Объем диска, ГБ | 
|---|---|
| /mnt/vector-data | 1 | 
| /opt | 1 | 
| /opt/local-path-provisionerОбъем зависит от настроек хранилища, заданных пользователем. Рекомендуется вынести на отдельный раздел. | 100 | 
| /tmp | 1 | 
| /var/lib | 55 | 
| /var/lib/bashible | 1 | 
| /var/lib/containerd | 30 | 
| /var/lib/kubelet | 24 | 
| /var/log/pods | 5 (подробнее...) | 
Системные узлы
Системные узлы (system-узел) — это узлы, на которых запускаются компоненты DKP. При добавлении таких узлов в кластер учитывайте, что на них размещается нагрузка мониторинга, включая:
- Prometheus;
- loki;
- upmeter и другие компоненты DKP.
Если данные мониторинга хранятся локально на узлах, для каждого системного узла рекомендуется дополнительно выделить ≥ 100 ГБ свободного дискового пространства.
Если в кластере не используются выделенные системные узлы, указанная выше нагрузка будет распределена по другим узлам. Учтите рекомендуемые объёмы дискового хранилища при выборе их конфигурации.
Хранилище логов подов
Логи подов хранятся в каталоге /var/log/pods/. Объём, занимаемый логами, зависит от количества контейнеров и настроек DKP. В среднем, на master-узле при использовании набора модулей Default работает около 90 контейнеров, на логи каждого из которых по умолчанию выделяется около 50 Мб места. Соответственно, в каталоге /var/log/pods/ должно быть доступно как минимум 90 * 50 Мб = 4,5 ГБ места.
Параметры хранения логов также могут быть переопределены в параметре containerLogMaxSize группы узлов:
containerLogMaxSize: 50Mi
containerLogMaxFiles: 4
Хранилище баз уязвимостей Trivy
DKP имеет встроенную систему сканирования образов на уязвимости на базе Trivy, которая сканирует все контейнерные образы, используемые в подах кластера. Для сканирования используются как публичные базы уязвимостей, так и обогащённые данные из Astra Linux, ALT Linux и РЕД ОС. Суммарный объем занимаемого базами дискового пространства составляет 5 ГБ, поэтому его необходимо учитывать при выборе конфигурации разделов диска.
Базы данных хранятся на системных узлах кластера, а в случае, если такие узлы в кластере отсутствуют, базы будут расположены на worker-узле.
Если настроены лимиты по ресурсам
Если для объектов кластера заданы лимиты на диск (квоты, ограничения на объём), требуемое свободное место всё равно должно быть физически доступно на узле. При его отсутствии произойдёт вытеснение нагрузки (eviction) с соответствующих узлов.
Локальное хранилище на основе LVM
В кластере DKP можно настроить локальное хранилище на узлах с использованием LVM.
Требования и порядок размещения:
- На узле должны быть доступны свободные блочные устройства (разделы диска).
- Эти устройства будут задействованы модулем sds-local-volume для создания StorageClass.
- Объём свободного пространства на блочном устройстве должен соответствовать объёму, который планируется предоставлять через создаваемый StorageClass.