Облачная платформаВсе платформы

Распределение места Диска с данными

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

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

Распределение места по умолчанию Диска с данными

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 только если Хранилище системных компонентов is set to Диск с данными. Вы можете настроить распределение места по умолчанию Диска с данными.

При создании узла вы можете указать Распределение места Диска с данными в расширенной области Диск с данными.

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

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

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

Для узла, использующего незагруженный (незащищённый) Диск с данными (например, 100 ГБ), распределение места диска зависит от типа Rootfs хранилища контейнеров Device Mapper or 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 (basesize) связано с ОС узла и Rootfs хранилища контейнеров. Подробную информацию о Rootfs хранилища контейнеров см. в Соответствие между ОС и Rootfs хранилища контейнеров.

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

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

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

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

Соответствие между ОС и Rootfs хранилища контейнеров

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

ОС

Rootfs хранилища контейнеров

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

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 и более новыми версиями. По умолчанию ограничений нет.

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

ОС

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 and LowThresholdPercent. Использование диска, превышающее высокий порог (по умолчанию: 80%), инициирует сборку мусора, которая удалит наименее недавно использованные образы до достижения низкого порога (по умолчанию: 70%).

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

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

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

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

Notice
  • Эта функция доступна только в кластерах v1.21.10-r0, v1.23.8-r0, v1.25.3-r0 и более новых.
  • Если Rootfs установлен в OverlayFS, совместные Диски с данными поддерживаются. Если Rootfs установлен в Device Mapper, совместные Диски с данными не поддерживаются.
  • Если в кластере установлен аддон CCE Node Problem Detector, обновите аддон до версии v1.18.10 или новее. Иначе будут генерироваться ложные сигналы.
  • Если в кластере установлен аддон Cloud Native Log Collection, обновите его до версии v1.3.0 или новее. Иначе работа сбора логов будет затронута.
  • Если в кластере установлен ICAgent, обновите его до версии v5.12.140 или новее. Иначе сбор логов будет затронут.

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

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

Рисунок 3 Выделение пространства хранилища совместного Диска с данными