Kubernetes jobs:使用rsync创建按期备份任务

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

这里使用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的执行周期,自动定时备份。
  • 恢复
    • 读取备份数据卷,恢复到原始位置。

使用上面的机制,能够在多个节点间同步文件。ssh

把上面安装的工具改成wget,也能够用来下载(按期下载、更新)须要的文件。工具