腾讯云TKE-Pod案例: 容器内crontab问题
时间:2022-07-26
本文章向大家介绍腾讯云TKE-Pod案例: 容器内crontab问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
背景
业务应用在使用容器的时候, 有时候需要在容器内使用crontab 定时任务清理日志或这执行其他的任务.
问题
好多人在写dockerfile的时候是按照下面的方式编写:
FROM centos:7
ADD app.sh /app.sh
RUN yum install crontabs -y
&& echo '*/1 * * * * echo "debug crontab" >> /var/log/debug_crontab.log' > /var/spool/cron/root
CMD "systemctl start crond && /bin/sh app.sh"
启动会报如下错误:
Failed to get D-Bus connection: Operation not permitte
进入到容器手动启动crond进程存在但任务不执行.
原因如下:
systemctl依赖initd进程,Linux操作系统的initd进程必须占用1号进程,而docker的启动脚本也是1号进程,虽然这个冲突可以通过/usr/sbin/systemd —system
来避免,但执行systemctl命令还是可能有操作权限的问题
解决方案
- 在TKE控制台中开启特权容器(不推荐):
如果是yaml创建在容器字段修改以下值:
securityContext:
privileged: true
- 修改Dockerfile
直接
crond
启动即可FROM centos:7 ADD app.sh /app.sh RUN yum install crontabs -y && echo '*/1 * * * * echo "debug crontab" >> /var/log/debug_crontab.log' > /var/spool/cron/root CMD "crond && /bin/sh app.sh"
查看日志验证运行正常:
- MySQL 5.6, 5.7并行复制测试(二)(r12笔记第10天)
- MySQL主从报错解决:Failed to initialize the master info structure
- 使用pt工具检测MySQL主从延迟(r12笔记第7天)
- WordPress发布/更新文章、提交/审核评论自动清理VeryCloud缓存
- MySQL中的binlog和redo浅析(r12笔记第5天)
- WordPress发布/更新文章、提交/审核评论自动清理腾讯云CDN缓存
- 使用sysbench压力测试MySQL(一)(r11笔记第3天)
- 分享一下php7和其他php多版本共存的配置教程
- 使用sysbench压力测试MySQL(二)
- 使用sysbench压力测试MySQL(三)(r12笔记第6天)
- 解决IE响应式的解决方案css3-mediaqueries.js不生效问题
- MySQL传输表空间小结(r12笔记第2天)
- swingbench压测Oracle小记(r12笔记第20天)
- 分享最近对网站外链跳转页面代码的一些改善
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法