В этом разделе описывается, как распределять пространство диска с данными между узлами, чтобы вы могли соответственно настроить пространство диска с данными.
При создании узла вы можете указать Распределение пространства Диска с данными в расширенной области Диск с данными.
Если сумма пространства движка контейнеров и образов контейнеров и пространство kubelet и emptyDir составляет менее 100%, оставшееся пространство будет выделено для пользовательских данных. Вы можете смонтировать том хранилища в путь сервиса. Не оставляйте путь пустым и не указывайте ключевой путь ОС, например корневой каталог.
Для узлов, использующих диск с данными, общий между контейнерным движком и компонентами kubelet, контейнерное хранилище Rootfs имеет OverlayFS тип. Для получения подробностей о выделении пространства диска с данными, см. Диск с данными, совместно используемый контейнерным движком и компонентами kubelet.
Для узла, использующего необщий диск с данными (например, 100 GiB), распределение пространства диска зависит от типа Rootfs контейнерного хранилища Device Mapper или OverlayFS. Для получения подробностей о контейнерном хранилище Rootfs, соответствующем различным OSs, см. Соответствие между OS и Rootfs хранилища контейнера.
По умолчанию, движок контейнера и пространство образов, занимающие 90% диска с данными, могут быть разделены на следующие две части:
Тонкий пул монтируется динамически. Вы можете просмотреть его, запустив lsblk команду на узле, но не df -h команду.
Рисунок 1 Распределение пространства для контейнерных движков Device Mapper

Отдельного тонкого пула нет. Весь контейнерный движок и пространство образов контейнеров (по умолчанию 90% диска с данными) находятся в /var/lib/docker директории.
Рисунок 2 Распределение пространства для контейнерных движков OverlayFS

Пользовательское пространство контейнера pod (basesize) относится к OS узла и контейнерному хранилищу Rootfs. Подробнее о контейнерном хранилище Rootfs см. Отображение между OS и контейнерным хранилищем Rootfs.
При настройке basesize, учитывайте максимальное количество pod‑ов, разрешённое на одном узле. Объём пространства движка контейнера должен быть больше общего объёма диска, используемого контейнерами (formula: Пространство движка контейнера и пространство образа контейнера (по умолчанию 90%) > Количество контейнеров × basesize). В противном случае выделенное узлу пространство движка контейнера может быть недостаточным, и контейнер не запустится.
Для узлов, поддерживающих базовый размер, когда используется Device Mapper, хотя вы можете ограничить размер /home каталог одного контейнера (по умолчанию до 10 GiB), все контейнеры на узле всё ещё совместно используют thin pool узла для хранения. Они не полностью изолированы. Когда суммарный объём thin pool, используемый определёнными контейнерами, достигает верхнего предела, другие контейнеры не могут работать должным образом.
Кроме того, после того как файл удалён в /home каталоге контейнера, объём thin pool, занятый файлом, не освобождается немедленно. Поэтому, даже если базовый размер установлен в 10 GiB, объём thin pool, занимаемый файлами, продолжает расти до 10 GiB, когда файлы создаются в контейнере. Освобождённое после удаления файлов пространство будет переиспользовано, но через некоторое время. Если количество контейнеров на узле, умноженное на базовый размер больше, чем размер thin pool узла, существует возможность, что пространство thin pool исчерпано.
OS | Контейнерное хранилище Rootfs | Пользовательский базовый размер |
|---|---|---|
CentOS 7.x | Кластеры версии v1.19.16 и более ранних используют Device Mapper. Кластеры версии v1.19.16 и более новых используют OverlayFS. ПРИМЕЧАНИЕ: При обновлении кластеров более ранних версий узлы Device Mapper не переключатся автоматически на OverlayFS. Вам необходимо вручную сбросить эти узлы. | Поддерживается, когда Rootfs установлен в Device Mapper и среда выполнения — Docker. Значение по умолчанию — 10 GiB. Если Rootfs установлен в OverlayFS, basesize указать нельзя. |
EulerOS 2.5 | Device Mapper | Поддерживается только когда среда выполнения — Docker. Значение по умолчанию — 10 GiB. |
Ubuntu 18.04 | OverlayFS | Не поддерживается |
Ubuntu 22.04 | OverlayFS | Не поддерживается |
HCE OS 2.0 | OverlayFS | Поддерживается только кластерами Docker версии ранее v1.23.14-r0, v1.25.9-r0, v1.27.6-r0 или v1.28.4-r0. Ограничений по умолчанию нет. Поддерживается как кластерами Docker, так и containerd версии v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0 и выше. Ограничений по умолчанию нет. |
ОС | Rootfs хранилища контейнера | Пользовательский базовый размер |
|---|---|---|
CentOS 7.x | OverlayFS | Не поддерживается |
Ubuntu 18.04 | OverlayFS | Не поддерживается |
Ubuntu 22.04 | OverlayFS | Не поддерживается |
HCE OS 2.0 | OverlayFS | Поддерживается только кластерами Docker версии ранее, чем v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, или v1.28.4-r0. По умолчанию ограничений нет. Поддерживается как кластерами Docker, так и containerd версии v1.23.14-r0, v1.25.9-r0, v1.27.6-r0, v1.28.4-r0 либо более поздними. По умолчанию ограничений нет. |
Когда пространство контейнерного движка недостаточно, инициируется сбор мусора образов.
Политика сбора мусора образов учитывает два фактора: HighThresholdPercent и LowThresholdPercent. Использование диска, превышающее высокий порог (по умолчанию: 80%) вызовет сборку мусора, которая удалит наименее недавно использованные образы до достижения низкого порога (по умолчанию: 70%).
Docker/containerd и компоненты kubelet совместно используют пространство Диска с данными.
Для узлов, использующих общий диск с данными, корневая файловая система контейнера Rootfs имеет OverlayFS type. После создания такого узла объём диска с данными (например, 100 GiB) не будет разделён для container engines, container images и компонентов kubelet. Диск с данными монтируется в /mnt/paas, и объём хранения делится с помощью двух файловых систем.
Рисунок 3 Выделение объёма хранения совместного диска с данными
