Kubernetes jobs:使用rsync建立定期备份任务

原创
2018/09/09 21:19
阅读数 1.3K

Kubernetes中的job和cronjob可用于批处理和定时任务。这里,我们使用其建立集群级别的文件备份机制。

这里使用rsync进行文件的同步。为了远程登录到服务器,使用sshpass(参见 Ubuntu上使用sshpass远程脚本免密安全交互 )进行远程访问。结合了sshpass的rsync命令如下:

SSHPASS='yourPasswordHere' rsync --rsh="sshpass -e ssh -l username" server.example.com:/var/www/html/ /backup/

我们将其写入一个脚本,然后放到Docker容器中去执行,该容器被作为job的执行引擎。为此:

  • 部署
    • 需要编写一个Dockerfile,安装rsync和sshpass。
      • 挂载备份的目标卷。
      • 同时,挂载一个配置卷(或者放在Redis之类的存储里面)。
        • 将sshpass的password、username@target等放在里面。
        • 做一个备份的任务清单,可以顺序执行或者并行地执行。
    • 编写一个job的定义文件,从配置卷(或共享数据存储)读取任务信息,然后执行备份。
      • 通过rsync和sshpass读取数据,并存储到备份卷上。
    • 编写一个job的定义文件,从配置卷(或共享数据存储)和备份数据卷读取任务信息,然后执行备份恢复操作。
  • 备份
    • 直接运行job进行备份。
    • 修改cronjob的执行周期,自动定时备份。
  • 恢复
    • 读取备份数据卷,恢复到原始位置。

使用上面的机制,可以在多个节点间同步文件。

把上面安装的工具改为wget,也可以用来下载(定期下载、更新)需要的文件。

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部