k3s не удалось подготовить снимок извлечения

Вопрос или проблема

У меня произошел сбой сервера при импорте большого tarball с помощью k3s ctr images import my_image.tar. После перезагрузки сервера и попытки повторного импорта я получаю:

распаковка docker.io/library/my_image (sha256:b69c6d6ebdb9517f7a93deede3ccf6380aebbc6a8fa68da14ab06bc1be131423)...ctr: не удалось подготовить снимок извлечения "extract-774071004-6PJT sha256:6e98c2a3f1228e003bc43b054a526b4bf36783f2ff04b8b6ce12b0beb640555d": не удалось получить родитель: stat /var/lib/rancher/k3s/agent/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/327/fs: нет такого файла или директории: неизвестно

Эта папка 327 отсутствует. Я пытался очистить образы с помощью k3s ctr images prune --all, но это не помогло. Как мне исправить эту ошибку без переустановки containerd?

.

Ответ или решение

Решение проблемы: "k3s не удалось подготовить снимок извлечения"

Краткое введение: Ошибка, с которой вы столкнулись при попытке повторного импорта образа в K3s, связана с отсутствием нужной директории в файловой системе контейнера. Ниже приведены подробные шаги по устранению этой ошибки.

Причины возникновения ошибки

  1. Системный сбой: Сбой сервера мог вызвать повреждение системы управления контейнерами, что повлияло на целостность данных в каталоге /var/lib/rancher/k3s/agent/containerd.
  2. Отсутствие каталога: Ошибка упоминает, что каталог 327, содержащий нужные файлы, отсутствует. Это может произойти при сбое, когда система не успела корректно завершить запись данных на диск.

Шаги по устранению проблемы

  1. Проверка состояния контейнеров и образов:
    Проверьте текущее состояние контейнеров и образов, выполните:

    k3s ctr images ls

    Это поможет вам убедиться, какие образы доступны.

  2. Удаление повреждённых образов:
    Если образ my_image был частично импортирован, лучше всего удалить его и очистить связанные данные:

    k3s ctr images rm docker.io/library/my_image

    Замените docker.io/library/my_image на реальное имя вашего образа.

  3. Очистка системы:
    Запустите команду для очистки ненужных данных в k3s:

    k3s ctr prune --all

    Имейте в виду, что эта команда удалит все ненужные образы и контейнеры, и может занять некоторое время в зависимости от объёма данных.

  4. Ручное восстановление каталога:
    Если каталог 327 отсутствует, и стандартные команды не помогают, вы можете попробовать вручную восстановить состояние каталога:

    • Перейдите в директорию /var/lib/rancher/k3s/agent/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/.
    • Убедитесь, что отсутствующий каталог не является критически важным для существующих образов.
    • Если вы уверены, что данные не нужны, вы можете удалить все каталоги, содержащие признаки прежних проблем, и затем заново выполнить импорт:
      rm -rf snapshots/*
  5. Повторный импорт образа:
    После удаления повреждённых данных и очистки системы попробуйте снова импортировать ваш образ:

    k3s ctr images import my_image.tar
  6. Логи и дополнительные ошибки:
    Проверяйте логи K3s и контейнеров на предмет дополнительных ошибок, используя команду:

    journalctl -u k3s

Заключение

Следуя вышеописанным шагам, вы сможете преодолеть проблему импорта изображения в K3s. Если же проблема не устраняется, возможно, потребуется более глубокое исследование состояния системы или, при необходимости, переустановка containerd. Однако, после очистки и повторного импорта, система должна восстановиться и корректно обрабатывать ваши команды.

Оцените материал
Добавить комментарий

Капча загружается...