В этом разделе описывается, как распределять пространство диска с данными между узлами, чтобы вы могли соответственно настроить пространство диска с данными.
Выделение пространства Диска с данными по умолчанию
- В кластерах версии ранее v1.23.18-r0, v1.25.13-r0, v1.27.10-r0, v1.29.4-r0 или v1.28.8-r0 по умолчанию будет добавлен диск с данными к узлу для компонентов среды выполнения контейнера и kubelet. Вы можете настроить распределение места по умолчанию диска с данными.
- В кластерах v1.23.18-r0, v1.25.13-r0, v1.27.10-r0, v1.28.8-r0, v1.29.4-r0 или более поздних версиях, диск с данными по умолчанию будет добавлен к узлу для среды выполнения контейнера и компонентов kubelet только если Хранилище системных компонентов установлено в Диск с данными. Вы можете настроить распределение места по умолчанию диска с данными.
При создании узла вы можете указать Распределение пространства Диска с данными в расширенной области Диск с данными.
- Выделение пространства для контейнерных движков
- Указанное дисковое пространство: CCE по умолчанию делит пространство диска данных на две части. Одна часть используется для хранения рабочих каталогов Docker/containerd, данных образов контейнеров и метаданных образов. Другая зарезервирована для kubelet и томов emptyDir. Доступное пространство движка контейнеров влияет на загрузку образов и запуск и работу контейнеров.
- Пространство движка контейнеров и образов контейнеров (90% по умолчанию): хранит рабочие каталоги среды выполнения контейнеров, данные образов контейнеров и метаданные образов.
- Пространство kubelet и emptyDir (10% по умолчанию): хранит файлы конфигурации pod, секреты и монтированное хранилище, такое как тома emptyDir.
NoteЕсли сумма пространства движка контейнеров и образов контейнеров и пространство kubelet и emptyDir составляет менее 100%, оставшееся пространство будет выделено для пользовательских данных. Вы можете смонтировать том хранилища в путь сервиса. Не оставляйте путь пустым и не указывайте ключевой путь ОС, например корневой каталог.
- Общее дисковое пространство: В кластерах v1.21.10-r0, v1.23.8-r0, v1.25.3-r0 или более поздних версиях CCE позволяет контейнерный движок (Docker/containerd) и компоненты kubelet для совместного использования пространства диска данных.
- Указанное дисковое пространство: CCE по умолчанию делит пространство диска данных на две части. Одна часть используется для хранения рабочих каталогов Docker/containerd, данных образов контейнеров и метаданных образов. Другая зарезервирована для kubelet и томов emptyDir. Доступное пространство движка контейнеров влияет на загрузку образов и запуск и работу контейнеров.
- Распределение пространства для Подов: указывает basesize пода. Вы можете установить верхний предел для дискового пространства, занятого каждым рабочим Подом (включая пространство, занятое образами контейнеров). Эта настройка предотвращает захват Подами всего доступного дискового пространства, что может вызвать исключения сервиса. Рекомендуется, чтобы значение было меньше или равно 80 % пространства контейнерного движка. Этот параметр связан с ОС узла и корневой файловой системой хранения контейнеров Rootfs и не поддерживается в некоторых сценариях. Для получения подробностей см Сопоставление между ОС и хранилищем контейнеров Rootfs.
- Режим записи
- Линейный: Линейный логический том объединяет один или несколько физических томов. Данные записываются в следующий физический том, когда предыдущий исчерпывается.
- Полосный: доступно только если есть как минимум два диска с данными. Полосовой логический том разбивает данные на блоки одинакового размера и сохраняет их в нескольких физических томах последовательно. Это позволяет одновременно читать и записывать данные. Пул хранения, состоящий из полосовых томов, нельзя масштабировать.
Выделение пространства для контейнерных движков
Для узлов, использующих диск с данными, общий между контейнерным движком и компонентами kubelet, контейнерное хранилище Rootfs имеет OverlayFS тип. Для получения подробностей о выделении пространства диска с данными, см. Диск с данными, совместно используемый контейнерным движком и компонентами kubelet.
Для узла, использующего необщий диск с данными (например, 100 GiB), распределение пространства диска зависит от типа Rootfs контейнерного хранилища Device Mapper или OverlayFS. Для получения подробностей о контейнерном хранилище Rootfs, соответствующем различным OSs, см. Соответствие между OS и Rootfs хранилища контейнера.
- Rootfs (Device Mapper)
По умолчанию, движок контейнера и пространство образов, занимающие 90% диска с данными, могут быть разделены на следующие две части:
- The /var/lib/docker директория используется как рабочая директория Docker и по умолчанию занимает 20% пространства движка контейнера и образов контейнера. (Пространство /var/lib/docker директория = Объём диска данных × 90% × 20%)
- thin pool используется для хранения данных образов контейнера, метаданных образов и данных контейнера, и по умолчанию занимает 80% пространства движка контейнера и образов контейнера. (Пространство thin pool = Объём диска данных × 90% × 80%)
Тонкий пул монтируется динамически. Вы можете просмотреть его, запустив lsblk команду на узле, но не df -h команду.
Рисунок 1 Распределение пространства для контейнерных движков Device Mapper

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

Распределение пространства для Pod'ов
Пользовательское пространство контейнера pod (basesize) относится к OS узла и контейнерному хранилищу Rootfs. Подробнее о контейнерном хранилище Rootfs см. Отображение между OS и контейнерным хранилищем Rootfs.
- Device Mapper поддерживает пользовательский pod basesize. Значение по умолчанию — 10 GiB.
- В режиме OverlayFS пространство pod контейнера не ограничено по умолчанию.
При настройке 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
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%).
Рекомендуемая конфигурация для пространства Container Engine
- Пространство контейнерного движка должно быть больше общего объёма диска, используемого контейнерами. Формула: Пространство контейнерного движка > Количество контейнеров x basesize
- Рекомендуется создавать и удалять файлы контейнеризованных сервисов в локальных томах хранилища (например, томах emptyDir и hostPath) или в каталогах облачного хранилища, смонтированных к контейнерам. Таким образом, пространство тонкого пула не будет занято. Тома emptyDir занимают пространство kubelet. Поэтому правильно планируйте размер пространства kubelet.
- Вы можете деплой сервисы на узлах, использующих OverlayFS (подробности смотрите Сопоставление между ОС и Container Storage Rootfs) чтобы свободное дисковое пространство, занятое файлами, созданными или удалёнными в контейнерах, могло быть освобождено немедленно.
Диск с данными, общий для Container Engine и компонентов kubelet
Docker/containerd и компоненты kubelet совместно используют пространство Диска с данными.
- Эта функция доступна только кластерам v1.21.10-r0, v1.23.8-r0, v1.25.3-r0 или более поздним версиям.
- Если Rootfs установлен в OverlayFS, общие диски с данными поддерживаются. Если Rootfs установлен в Device Mapper, общие диски с данными не поддерживаются.
- Если в кластере установлен аддон NPD, обновите аддон до версии v1.18.10 или более новой. В противном случае будут генерироваться ложные сигналы.
- Если в кластере установлен аддон log-agent, обновите аддон до версии v1.3.0 или более новой. В противном случае сбор логов будет затронут.
- Если в кластере установлен ICAgent, обновите его до версии v5.12.140 или более новой. В противном случае сбор логов будет затронут.
Для узлов, использующих общий диск с данными, корневая файловая система контейнера Rootfs имеет OverlayFS type. После создания такого узла объём диска с данными (например, 100 GiB) не будет разделён для container engines, container images и компонентов kubelet. Диск с данными монтируется в /mnt/paas, и объём хранения делится с помощью двух файловых систем.
- dockersys: /mnt/paas/runtime
- Kubernetes: /mnt/paas/kubernetes/kubelet
Рисунок 3 Выделение объёма хранения совместного диска с данными
