K8S(rancher) 服务(POD)定时重启服务方案
目标
- 每天在固定时间点,重启服务。
- 运行N小时后重启服务。
难点:
- 原先Linux虚拟机部署中,可以轻易实现。
- 现在Docker K8S 如何实现?
解决方案:
- 巧用 rancher 2.* 新特性 -- 存活状态检查(liveness)
- 特性说明
- 健康检查
- 在容器启动后的N秒后以N秒的频率执行一次检查
- TCP 端口检查
- HTTP 请求状态检查(2xx 或 3xx)
- HTTPS 请求状态检查(2xx 或 3xx)
- 容器中进程退出状态码检查(0) * 新特性
- 重点 容器中进程退出状态码检查(0)
- 原理说明
- 定时执行一个shell命令
- 执行语句报错,容器重新部署。
- 单节点执行
- 每个节点都会单独执行
- 原理说明
- 在容器启动后的N秒后以N秒的频率执行一次检查
- 健康检查
- 特性说明
- POD定时任务
- 使用 Kubernetes组件-CronJob
实践指南:
实践指南 -- 每天特定时间重启
- 设置
- 设置脚本
- /bin/sh -c 'if [ "$(date +%H%M)" -eq "0130" ];then cat /aa/a ; fi'
- 每天的01点30分钟,重起一次。
实践指南 --- 运行特定时间后重启
- 设置
- 运行12个小时后重启服务
- 检查间隔 设置运行时间。
实践指南 --- POD定时任务--指定运行时间
注意事项:
- 运行命令一定要写对!他会自动转换,设置完毕后,最好可以看一下YAML文件,命令是否正确。
- 设置的时间要合理。需要考虑检查运行的时间与频率。
特别说明:
- 目前来看,健康检查设置一项(未验证), 当前方式设置后,定时端口检查将不会开启(未验证)。