前言
k3s的备份我们采用 kube-backup
,它能帮我们把每个命名空间里一些基础的yaml备份,比如deployment、svc、pvc等,并通过git账号配置,自动上传至git仓库
开始
- 下载源码
1 | git clone https://github.com/pieterlange/kube-backup.git |
- 创建命名空间
1 | kubectl create ns kube-backup |
- 将源码的配置文件里面,所有的kube-system改为kube-backup
1 | sed -i 's#namespace: kube-system#namespace: kube-backup#g' *.yaml |
- 在源码目录下创建密钥对
1 | ssh-keygen -t rsa -f ./id_rsa -N '' |
- 将git仓库域名或ip添加授信列表里
1 | ssh-keyscan gitee.com > known_hosts |
- 将密钥和授信列表存入kube-backup中
1 | kubectl create secret generic kube-backup-ssh -n kube-backup --from-file=id_rsa --from-file=known_hosts |
请自行将 id_rsa.pub 公钥填在git账号配置ssh key里,不会配置网上有教程。如果你能使用
git@git仓库地址
成功克隆项目,则说明配置成功在git仓库中创建一个新项目,用于存放配置文件
更改
cronjob-codecommit.yaml
和cronjob-ssh.yaml
中的GIT_REPO
为新项目的git仓库地址,切记使用git@git仓库地址
。kubectl 版本高的请修改job-cleanup.yaml
里apiVersion: batch/v1beta1
执行以下文件
1 | kubectl apply -f ./ |
效果
1 | kubectl get cronjobs -n kube-backup |
这个定时任务默认每10分钟执行一次,你可以自行调整执行频率,此处不多论述
优化
job的定时清除可以不使用源代码提供的 job-cleanup.yaml
,只需要让kube-state-backup
执行完自动销毁即可
1 | spec: |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Leopold's Blog!
评论