#linux #docker #kubernetes #cron
#линукс #докер #кубернетес #крон
Вопрос:
У меня есть контейнер docker, в котором я выполняю следующее задание cron:
SHELL=/bin/bash BASH_ENV=/container.env */1 * * * * find ${CLONE_DIR} -mmin 10 -exec rm -fr {} gt;gt; /var/log/cronjob.log 2gt;amp;1 ;
Cronjob отлично работает в моей локальной среде (т. е. использует docker-compose для запуска контейнера).
В моей производственной среде я использую k8s и удаляю все возможности из контейнера:
securityContext: capabilities: drop: - ALL
Что приводит к тому, что задание вообще не выполняется.
Контрольный список:
- Я проверил, что
cron
служба запущена. - Никаких ошибок в
cron
сценарии. crontab -l
перечисляет задание
Я протестировал контейнер с и без capabilities
и могу убедиться, что с ним он работает, а без него-нет. Поэтому я думаю, что в этом и заключается проблема.
Какую возможность я должен добавить в свой контейнер, чтобы это работало? Спасибо за вашу помощь и внимание.
Комментарии:
1. какова ваша точка входа/cmd для контейнера docker, который поддерживает работу контейнера? CRON — это фоновая задача, и контейнеру требуется выполнение задачи переднего плана, чтобы контейнер оставался живым.
2. У меня есть скрипт bash, запускающий мой сервер, и CMD выглядит так: запуск службы CMD amp;amp; /подождите amp;amp; /server/start.sh
Ответ №1:
Недостающая возможность была: CAP_SETGID