Advanced
Тема интерфейса

Выделение пространства диска данных

Эта статья полезна?
Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

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

Выделение пространства диска данных по умолчанию

Note
  • В кластерах версии ранее 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 совместно использовать пространство диска данных.
  • Выделение пространства для pod'ов: указывает на базовый размер pod'а. Вы можете установить верхний предел пространства диска, занимаемого каждым pod'ом рабочей нагрузки (включая пространство, занимаемое образами контейнеров). Эта настройка предотвращает захват всех доступных дисковых ресурсов pod'ами, что может вызвать сбои службы. Рекомендуется, чтобы значение было меньше или равно 80% пространства движка контейнеров. Этот параметр связан с ОС узла и корневой файловой системой (Rootfs) хранилища контейнеров и не поддерживается в некоторых сценариях. Подробнее см. Отображение между ОС и Rootfs хранилища контейнеров.
  • Режим записи
    • Linear: Линейный логический том объединяет один или несколько физических томов. Данные записываются на следующий физический том, когда предыдущий заполнен.
    • Striped: доступно только при наличии как минимум двух дисков данных. Полосатый логический том распределяет данные на блоки одинакового размера и сохраняет их в нескольких физических томах последовательно. Это позволяет одновременно читать и записывать данные. Пул хранения, состоящий из полосатых томов, не может масштабироваться горизонтально.

Выделение пространства для движков контейнеров

Для узлов, использующих совместный диск данных между движком контейнеров и компонентами kubelet, Rootfs хранилища контейнеров имеет тип OverlayFS тип. Подробнее о выделении пространства диска данных см. Диск данных, совместно используемый движком контейнеров и компонентами kubelet.

Для узла, использующего отдельный диск данных (например 100 ГиБ), распределение пространства диска варьируется в зависимости от типа Rootfs хранилища контейнеров Device Mapper или OverlayFS. Подробнее о Rootfs хранилища контейнеров, соответствующем различным ОС, см. Отображение между ОС и Rootfs хранилища контейнеров.

  • Rootfs (Device Mapper)

    По умолчанию пространство движка контейнеров и образов, занимающее 90% диска данных, может быть разделено на две части:

    • Каталог /var/lib/docker каталог используется как рабочий каталог Docker и по умолчанию занимает 20% пространства движка контейнеров и образов. (Размер пространства /var/lib/docker каталог = Объём диска данных × 90% × 20%)
    • Тонкий пул используется для хранения данных образов контейнеров, их метаданных и данных контейнеров и по умолчанию занимает 80% пространства движка контейнеров и образов. (Пространство тонкого пула = Объём диска данных × 90% × 80%)

      Тонкий пул монтируется динамически. Вы можете просмотреть его, запустив lsblk команду на узле, но не df -h команду.

    Рисунок 1 Выделение пространства для движков контейнеров Device Mapper


  • Rootfs (OverlayFS)

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

    Рисунок 2 Выделение пространства для движков контейнеров OverlayFS


Выделение пространства для pod'ов

Настраиваемое пространство контейнера pod (базовый размер) связано с ОС узла и Rootfs хранилища контейнеров. Подробнее о Rootfs хранилища контейнеров см. Отображение между ОС и Rootfs хранилища контейнеров.

  • Device Mapper поддерживает пользовательский pod basesize. Значение по умолчанию — 10 GiB.
  • В режиме OverlayFS пространство контейнера pod по умолчанию не ограничено.

При настройке basesize, учитывайте максимальное количество pod, разрешённое на одном узле. Пространство движка контейнеров должно быть больше общего объёма диска, используемого контейнерами. Формула: Пространство движка контейнеров и пространство образов контейнеров (по умолчанию 90%) > Количество контейнеров x basesize. В противном случае выделенное для узла пространство движка контейнеров может быть недостаточным, и контейнер не сможет запуститься.

Для узлов, поддерживающих basesize, когда используется Device Mapper, хотя вы можете ограничить размер /home директорию отдельного контейнера (по умолчанию до 10 GiB), все контейнеры на узле всё равно совместно используют thin pool узла для хранения. Они не полностью изолированы. Когда суммарное использование thin pool некоторыми контейнерами достигает верхнего предела, остальные контейнеры не могут работать нормально.

Кроме того, после удаления файла в /home директории контейнера, пространство thin pool, занимаемое файлом, не освобождается сразу. Поэтому даже если basesize установлен в 10 GiB, пространство thin pool, занятое файлами, продолжает расти до 10 GiB при создании файлов в контейнере. Освобождённое после удаления файлов пространство будет использовано повторно, но спустя некоторое время. Если количество контейнеров на узле, умноженное на basesize больше размера thin pool узла, существует возможность, что пространство thin pool исчерпано.

Соответствие между ОС и Container Storage Rootfs

Таблица 1 ОС узлов и движки контейнеров в кластерах CCE

OS

Container Storage Rootfs

Пользовательский Basesize

CentOS 7.x

Кластеры версии v1.19.16 и ранее используют Device Mapper.

Кластеры версии v1.19.16 и позже используют 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 и более новых. По умолчанию ограничения отсутствуют.

Таблица 2 ОС узлов и движки контейнеров в кластерах CCE Turbo

OS

Container Storage Rootfs

Пользовательский Basesize

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%).

Рекомендуемая конфигурация пространства движка контейнеров

  • Пространство движка контейнеров должно быть больше общего объёма диска, используемого контейнерами. Формула: Пространство движка контейнеров > Количество контейнеров x basesize
  • Рекомендуется создавать и удалять файлы контейнеризованных сервисов в локальных томах хранения (например, emptyDir и hostPath) или в облачных каталогах, монтируемых к контейнерам. Таким образом пространство thin pool не будет занято. Тома emptyDir занимают пространство kubelet. Поэтому правильно планируйте размер пространства kubelet.
  • Вы можете разворачивать сервисы на узлах, использующих OverlayFS (подробнее см. Соответствие между ОС и Container Storage Rootfs) чтобы дисковое пространство, занимаемое файлами, созданными или удалёнными в контейнерах, могло освобождаться сразу.

Общий диск данных между движком контейнеров и компонентами kubelet

Компоненты Docker/containerd и kubelet совместно используют пространство диска данных.

Notice
  • Эта функция доступна только для кластеров версии v1.21.10-r0, v1.23.8-r0, v1.25.3-r0 и более новых.
  • Если Rootfs установлен в OverlayFS, общие диски данных поддерживаются. Если Rootfs установлен в Device Mapper, общие диски данных не поддерживаются.
  • Если в кластере установлен NPD add-on, обновите дополнение до версии v1.18.10 или более новой. В противном случае будут сгенерированы ложные тревоги.
  • Если в кластере установлен log-agent add-on, обновите дополнение до версии v1.3.0 или более новой. В противном случае сбор журналов будет затронут.
  • Если в кластере установлен ICAgent, обновите его до версии v5.12.140 или более новой. В противном случае сбор журналов будет затронут.

Для узлов, использующих общий диск данных, контейнерное хранилище Rootfs имеет the OverlayFS тип. После создания такого узла пространство диска данных (например, 100 GiB) не будет разделено для движков контейнеров, образов контейнеров и компонентов kubelet. Диск данных монтируется в /mnt/paas, и Объем хранения делится с использованием двух файловых систем.

  • dockersys: /mnt/paas/runtime
  • Kubernetes: /mnt/paas/kubernetes/kubelet

Рис. 3 Выделение Объема хранения общего диска данных