今天收到一个需求,服务部署到kubernetes需要在pod容器里面运行crontab 定时任务,这里不能使用kubernetes的cronjob功能,上网找了一个上午,终于解决问题,具体dockerfile 如下:
FROM centos:7
USER root
RUN yum update -y && \
yum reinstall -y glibc-common && \
yum install -y kde-l10n-Chinese && \
yum install -y telnet net-tools && \
yum install -y unzip zip && \
yum clean all && \
rm -rf /tmp/* rm -rf /var/cache/yum/* && \
localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
ENV LANG=zh_CN.UTF-8 \
LANGUAGE=zh_CN:zh \
LC_ALL=zh_CN.UTF-8
RUN yum -y install cronie
RUN yum -y install crontabs
#网上说要加上这句,但尝试去掉后还是能正常
#RUN sed -i '/session required pam_loginuid.so/c\#session required pam_loginuid.so' /etc/pam.d/crond
#编写定时任务
RUN echo "*/1 * * * * /bin/echo 'it works!' >> /root/test.log" >> /var/spool/cron/root
#一定要在这里运行crond,试过用run来运行,发现不成功
CMD crond && tail -f /dev/null
具体在容器里面查看的结果如下: