2015-08-21 2 views
2

У меня проблема, из-за которой cronjob в kubernetes, похоже, не работает. Ниже тест Dockerfile используетсяНевозможно запустить cronjobs на кубернетах

FROM debian:jessie 

RUN apt-get update 
RUN apt-get -y install --no-install-recommends cron 

RUN echo 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' | crontab 

RUN echo '0-59/2 * * * 0-4 export ENV=dev [email protected]; echo "$(date) ${ENV} ${RECIPIENT}" >> /var/log/cron.log' | crontab 

CMD ["cron", "-f", "-L", "15"] 

Использование родного докер запустить выше dockerfile, я мог видеть вывод в лог-файл, но не в kubernetes. Проверял события, но ничего необычного не заметил.

Ниже файл replicationcontroller YAML используется

apiVersion: v1 
kind: ReplicationController 
metadata: 
    labels: 
    name: cron-test 
    name: cron-test 
spec: 
    replicas: 1 
    selector: 
    name: cron-test 
    template: 
    metadata: 
     labels: 
     name: cron-test 
    spec: 
     containers: 
     - name: cron-test 
      image: example/cron-test:latest 
      resources: 
      limits: 
       cpu: 100m 
       memory: 512Mi 
      imagePullPolicy: Always 

Благодаря

+0

Действительно ли работает подкачка? –

ответ

0

Вы, вероятно, не в тот день недели (0-4), я просто попытался это со всеми * и наблюдается ожидаемый результат.

2

Как-то я получил это работает путем переключения Dockerfile вокруг

Dockerfile

FROM debian:jessie 

RUN apt-get update 
RUN apt-get -y install --no-install-recommends cron 

COPY . /src 
WORKDIR /src 

RUN cp run.sh /run.sh \ 
    && chmod a+x /run.sh \ 
    && touch /var/log/cron.log 

CMD ["/run.sh"] 

run.sh

#!/bin/sh 

cat <<EOF> /tmp/setup-env.sh 
export ENV=dev 
export [email protected] 
EOF 

crontab /src/crons.conf 
exec cron -f -L 15 

crons.conf

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
0-59/2 * * * 0-4 . /tmp/setup-env.sh ; echo "$(date) ${ENV} ${RECIPIENT}" >> /var/log/cron.log 2>&1 

Я думаю, что becau se crontab /src/crons.conf работал во время сборки, а сборка файловой системы отличается от выполняемой файловой системы i.e с встроенным докерером (rootfs) и запуском на кубернетах (overlayfs).

Смежные вопросы