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,也能夠用來下載(按期下載、更新)須要的文件。工具

相關文章
相關標籤/搜索