K8S(rancher) 服务(POD)定时重启服务方案

目标

  1. 每天在固定时间点,重启服务。
  2. 运行N小时后重启服务。

难点:

  1. 原先Linux虚拟机部署中,可以轻易实现。
  2. 现在Docker K8S 如何实现?

解决方案:

  1. 巧用 rancher 2.* 新特性 -- 存活状态检查(liveness)
    1. 特性说明
      1. 健康检查
        1. 在容器启动后的N秒后以N秒的频率执行一次检查
          1. TCP 端口检查
          2.  HTTP 请求状态检查(2xx 或 3xx)
          3.  HTTPS 请求状态检查(2xx 或 3xx)
          4.  容器中进程退出状态码检查(0)   * 新特性
        2. 重点 容器中进程退出状态码检查(0)
          1. 原理说明
            1. 定时执行一个shell命令
            2. 执行语句报错,容器重新部署。
          2. 单节点执行
            1. 每个节点都会单独执行
  2. POD定时任务
    1. 使用 Kubernetes组件-CronJob 

实践指南:

 
实践指南 -- 每天特定时间重启
 
  • 设置
    1. 1.png
  • 设置脚本
    1. /bin/sh -c 'if [ "$(date +%H%M)" -eq "0130" ];then  cat /aa/a ; fi'
    2. 每天的01点30分钟,重起一次。
    3. 2.png

实践指南 --- 运行特定时间后重启

 
  1. 设置
    1. 运行12个小时后重启服务
    2. 检查间隔 设置运行时间。
  2. 3.png

 

实践指南 --- POD定时任务--指定运行时间

      1602487809555-913.png

 

注意事项:

  • 运行命令一定要写对!他会自动转换,设置完毕后,最好可以看一下YAML文件,命令是否正确。
  • 设置的时间要合理。需要考虑检查运行的时间与频率。

特别说明:

  • 目前来看,健康检查设置一项(未验证), 当前方式设置后,定时端口检查将不会开启(未验证)。
原文地址:https://www.cnblogs.com/atliwen/p/13802484.html