前言
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 get cronjobs -n kube-backup
|
这个定时任务默认每10分钟执行一次,你可以自行调整执行频率,此处不多论述
优化
job的定时清除可以不使用源代码提供的 job-cleanup.yaml
,只需要让kube-state-backup
执行完自动销毁即可
1 2 3 4
| spec: jobTemplate: spec: ttlSecondsAfterFinished: 0
|