需求:

  • 1.在本地的/home/wanna/k8s目录下,存在有很多本地的很多K8S服务的资源清单,需要定时对这些服务的资源清单执行备份,避免丢失。
  • 2.目前市面上K8S集群最好的部分方式是Velero,因此我们使用Velero进行全集群的资源的备份。

我们新建一个Shell脚本文件k8s-backup-global.sh,内容修改为如下,即可实现如上两个功能:

#!/bin/bash

DATE=`date +%Y%m%d%H%M%S`
# 备份k8s集群的资源到MINIO
velero backup create k8s-main-backup-${DATE}  --kubeconfig=/home/wanna/.kube/config  --namespace=velero

# 创建压缩包, 备份k8s资源文件到MINIO
tar -czvf /home/wanna/k8s-${DATE}.tar.gz /home/wanna/k8s/
# 上传到MINIO
aws s3 cp /home/wanna/k8s-${DATE}.tar.gz s3://dell-server-resourceyaml-backup/ --endpoint-url http://192.168.11.168:9000 --checksum-algorithm CRC32
# 执行之后, 把压缩包删掉
rm -rf /home/wanna/k8s-${DATE}.tar.gz

我们使用如下的命令,编辑Linux系统的定时任务crontab。

crontab -e

在最后新增一行如下的配置文件:

0 5 * * * /home/wanna/k8s-backup/k8s-backup-global.sh

其中0 5 * * *这部分配置的是Cron表达式,表示每天凌晨5点执行这个定时任务脚本。