前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用kube-backup来备份K8s的资源

使用kube-backup来备份K8s的资源

原创
作者头像
保持热爱奔赴山海
修改2021-02-11 18:19:41
1.6K1
修改2021-02-11 18:19:41
举报
文章被收录于专栏:饮水机管理员饮水机管理员

K8s里面的各种资源yaml文件,建议还是需要定期备份的。

之前我们是在外部机器上 用的kubectl get xx遍历后,存下来,然后再git commit 提交到gitlab去备份。

最后空闲,研究了下之前运维同学部署在K8s里面的kube-backup这个备份方式,发现大体逻辑和我之前的一样,区别就是说统一到K8s里面来管理了。

既然学了,就再写个笔记备忘下,或许能帮到其他人呢。

创建gitlab账号和repo

代码语言:javascript
复制
创建一个gitlab group repo useraccount

例如我这里用的是一个super-bot高权限的账号

并且,把super-bot加到 新创建的repo里面,我给了个maintanier权限。

gitlab repo地址: git@192.168.2.188:infra/kube-backup.git
账号 super-bot

这些信息,后面都会用到。

gitlab界面
gitlab界面

下载github上的源文件

代码语言:javascript
复制
# 下载源码
git clone https://github.com/pieterlange/kube-backup.git

# 我们这里单独创建一个namespace,默认它是存到kube-system下面的
kubectl create ns kube-backup

# 修改配置文件
sed -i 's#namespace: kube-system#namespace: kube-backup#g' *.yaml

创建一个secret 用于给gitlab提交信息

代码语言:javascript
复制
# 下面这些命令在 kube-backup 目录下执行就行
 
ssh-keygen -t rsa -f ./id_rsa -N ''   # 创建一个ssh密钥对
ssh-keyscan 192.168.2.188 > known_hosts
kubectl create secret generic kube-backup-ssh -n kube-backup --from-file=id_rsa --from-file=known_hosts
$ kubectl get secrets -n kube-backup
NAME                  TYPE                                  DATA   AGE
default-token-5t2q5   kubernetes.io/service-account-token   3      2m36s
kube-backup-ssh       Opaque                                2      12s

将这个pub key 加到 super-bot 的gitlab key里面,不然后续流程会报错的

将key加到用户ssh keys里面
将key加到用户ssh keys里面

应用yaml并测试

代码语言:javascript
复制
# 然后,修改下面2个yaml中的 GIT_REPO地址为git@192.168.2.188:infra/kube-backup.git
-rw-r--r-- 1 root root 1.3K 2021-02-11 11:26 cronjob-codecommit.yaml
-rw-r--r-- 1 root root 1.3K 2021-02-11 11:26 cronjob-ssh.yaml

修改  job-cleanup.yaml 改为 apiVersion: batch/v1beta1 (我这的minikube版本较高,不修改的话,执行的报错)


# 应用这个目录下的4个yaml到k8s去生效
kubectl apply -f ./

# 查看效果
$ kubectl get cronjobs -n kube-backup
NAME                SCHEDULE       SUSPEND   ACTIVE   LAST SCHEDULE   AGE
kube-state-backup   */10 * * * *   False     0        <none>          28s

# 默认是10分钟执行一次,可以根据自己的需求改


# 下面是运行一段时间的效果
$ kubectl get pods -n kube-backup                                 
NAME                                 READY   STATUS    RESTARTS   AGE
kube-state-backup-1613016000-nh5mq   1/1     Running   5          19m

$ kubectl get jobs -n kube-backup 
NAME                        SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
kube-state-backup           30 1 * * 6   False     1        23m             30m
kube-state-backup-cleaner   1 6 * * *    False     0        <none>          2m37s

GitLab上的文件效果

gitlab
gitlab

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建gitlab账号和repo
  • 下载github上的源文件
  • 创建一个secret 用于给gitlab提交信息
  • 将这个pub key 加到 super-bot 的gitlab key里面,不然后续流程会报错的
  • 应用yaml并测试
  • GitLab上的文件效果
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com