Kubernetes не может удалить docker изображений с других узлов - PullRequest
0 голосов
/ 30 марта 2020

Мне нужно понять, как мы можем удалить изображение docker, используя Kubernetes. Я использую Jenkins для автоматизации конвейера, и Jenkins имеет доступ только к главному узлу, а не к подчиненным. Поэтому, когда я генерирую развертывание, все работает нормально, развертывание заставляет подчиненных извлекать из хранилища, и я все готовлю.

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

Есть ли способ удалить изображения на подчиненных узлах с главного узла?

Ответы [ 3 ]

2 голосов
/ 31 марта 2020

Kubernetes отвечает за удаление изображений, это Kubelet, который делает сборку мусора на узлах, в том числе удаление изображений, он настраивается. Удаление изображений внешними методами не рекомендуется, поскольку эти инструменты могут потенциально нарушить поведение kubelet, удалив контейнеры, которые, как ожидается, существуют.

Kubelet проверяет, заполнено ли хранилище для изображений более чем на 85%, в этом случае удалите несколько изображений, чтобы освободить место. Минимальное и максимальное пороговые значения можно настроить в файле /var/lib/kubelet/config.yaml

imageGCHighThresholdPercent - это процент использования диска, после которого всегда выполняется сборка мусора изображений.

ImageGCHighThresholdPercent - это процент использования диска, до которого сборка мусора образа никогда не запускается. Наименьшее использование диска для сбора мусора.

Значения по умолчанию:

ImageGCHighThresholdPercent 85

ImageGCLowThresholdPercent 80

0 голосов
/ 31 марта 2020

Kubelet в конечном итоге собирает старые неиспользуемые образы, когда использование диска превышает 85% (настройка по умолчанию). В противном случае kubernetes не предоставляет удаленный интерфейс для удаления изображений.

Для этого потребуется что-то вроде S SH для каждого узла или для запуска Daemonset, у которого есть разрешения для управления временем выполнения основного контейнера. См. Mr.Axe ответ для Docker / S SH вариант .

0 голосов
/ 31 марта 2020

Из главного узла Вы можете записать сценарий оболочки / ansible playbook для s sh в подчиненные узлы и удалить изображения-

docker images -f "dangling=true" -q | xargs --no-run-if-empty docker rmi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...