Где k3s хранит капсулы?
Я не могу найти информацию о том, где хранятся модули, работающие на узлах… Я знаю его временный файл, но что, если я хочу, чтобы они создавались в определенном хранилище или точке монтирования?
Из df -h на одном узле я вижу, что он монтируется:
shm 64M 0 64M 0% /run/k3s/containerd/io.containerd.grpc.v1.cri/sandboxes/a9d11117b319432fff833cda48e5dc16f88bcc28b8e8148077d607ddaf41dfab/shm
overlay 15G 1.9G 12G 14% /run/k3s/containerd/io.containerd.runtime.v1.linux/k8s.io/a9d11117b319432fff833cda48e5dc16f88bcc28b8e8148077d607ddaf41dfab/rootfs
overlay 15G 1.9G 12G 14% /run/k3s/containerd/io.containerd.runtime.v1.linux/k8s.io/ab8b17764bed69e2702565fa171fcc84defcab1de7093bd68f53581732ef39fb/rootfs
overlay 15G 1.9G 12G 14% /run/k3s/containerd/io.containerd.runtime.v1.linux/k8s.io/dc246f55de330a4a0d23da56bf7212008e49fe974302c664b930869544a58051/rootfs
tmpfs 396M 0 396M 0% /run/user/1000
Но где же настройка того, какую корневую папку он использует для этого монтирования? Я хочу указать, например, / cluster_tmp как главный корень для модулей кластера, развернутых на узле...
Я использую кластер rpi и хотел бы использовать для хранения данных диск USB3, а не SD-карту, чтобы облегчить чтение / запись на карту…
4 ответа
k3s стоит на плечах гигантов. В качестве среды выполнения контейнеров он использует containerd. И containerd настраивается с собственной конфигурацией toml. Увидеть man 5 containerd-config
:
root : The root directory for containerd metadata. (Default: "/var/lib/containerd")
И вот как /etc/containerd/config.toml
похоже:
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = 0
imports = ["/etc/containerd/runtime_*.toml", "./debug.toml"]
[grpc]
...
В root
параметр - самый интересный для вас. Здесь вы можете найти его описание:
root
будет использоваться для хранения любых типов постоянных данных для containerd. Снимки, контент, метаданные для контейнеров и изображений, а также любые данные плагинов будут храниться в этом месте. Корневой каталог также имеет пространство имен для подключаемых модулей, загружаемых с помощью контейнера. У каждого плагина будет свой каталог, в котором он хранит данные. Сам containerd на самом деле не имеет никаких постоянных данных, которые ему нужно хранить, его функциональность обеспечивается загруженными плагинами.
/var/lib/containerd/
├── io.containerd.content.v1.content
│ ├── blobs
│ └── ingest
├── io.containerd.metadata.v1.bolt
│ └── meta.db
├── io.containerd.runtime.v1.linux
│ ├── default
│ └── example
├── io.containerd.snapshotter.v1.btrfs
└── io.containerd.snapshotter.v1.overlayfs
├── metadata.db
└── snapshots
/run
должен быть tmpfs, т.е. находиться в оперативной памяти, а не на физическом носителе. Каталоги сообщили, что не являются фактическим хранилищем.
Учитывая вашу цель хранить большинство вещей на USB-накопителе, самым простым решением было бы переместить в него весь каталог данных k3s, используя --data-dir
/-d
параметр командной строки согласно документации. Это заставит k3s и встроенный containerd разместить все свои рабочие файлы и каталог на USB-накопителе.
Я считаю, что k3s имеет собственный двоичный файл containerd и связанную с ним конфигурацию. Установив k3s явно, то есть вызвав команду "k3s server" с параметром
--container-runtime-endpoint value (agent/runtime) Disable embedded containerd and use alternative CRI implementation
вы можете указать альтернативную среду выполнения контейнера, настроенную в соответствии с вашими потребностями, например, с хранилищем в другом томе или разделе.
Больше информации в документации k3s
Что касается вашей конкретной идеи, что произойдет, если USB-накопитель исчезнет?
Не похоже, что K3s будет создавать поды в определенном каталоге на узле. Я рекомендовал бы вам прочитать о Kubernetes архитектуры и компонентов Kubernetes.
Если вы хотите использовать конкретный каталог на node
или какой-то сетевой диск, который вам нужно прочитать Persistent Volume
а также Persistent Volume Claim
.
Здесь вы можете найти информацию, как указать, какой путь в контейнере будет указывать путь на вашей виртуальной машине / сетевом диске.
Пожалуйста, уточните свой вопрос, если это не то, что вы ищете.