前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >把PVC备份到S3

把PVC备份到S3

作者头像
崔秀龙
发布于 2020-01-17 02:44:59
发布于 2020-01-17 02:44:59
1.2K00
代码可运行
举报
文章被收录于专栏:伪架构师伪架构师
运行总次数:0
代码可运行

k8up 是一个基于 Restic 的备份工具,可以一次性的或者周期性的把指定的 PVC 备份到 S3 协议的对象存储上去,备份内容还可以使用 Restic 恢复到 S3 或者 PVC 上。除了 PVC,后续还可以用命令的方式,例如 mysqldump,把数据库等内容备份出来。

安装和初始化

Helm 安装即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm repo add appuio https://charts.appuio.ch
helm repo update
helm install appuio/k8up

安装过程会生成一系列的 CRD,会在后续步骤中使用。

后续过程中需要两个 Secret,分别用来加密备份和访问 S3:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl create secret generic s3secret --from-literal token=[hidden] \
--from-literal key=[hidden]
secret/s3secret created
$ kubectl create secret generic backup --from-literal password=PassW0rd
secret/backup created

备份 PVC

k8up 会选择命名空间中注解为 appuio.ch/backup: "true" 的 PVC 进行备份,我们用下文的工作负载生成两个 PVC,运行起来之后,两个 PVC 分别挂载到容器/data1/data2 目录中,可以登录到 Pod,在其中生成文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl exec -it debugger-7b8f654484-hrcg9 bash
bash-4.4# echo "Hello world" > /data/data.txt

创建一次性任务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: backup.appuio.ch/v1alpha1
kind: Backup
metadata:
name: backup-now
spec:
keepJobs: 4
backend:
repoPasswordSecretRef:
name: backup
key: password
s3:
endpoint: https://s3.amazonaws.com
bucket: dustise
accessKeyIDSecretRef:
name: s3secret
key: token
secretAccessKeySecretRef:
name: s3secret
key: key

查看 Pod 日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl logs -f k8up-1578112449-84d7d4d6cc-q6qsh
2020/01/04 14:30:10 [INFO] New backup job received backup-now in namespace default
2020/01/04 14:30:10 [INFO] Listing all PVCs with annotation appuio.ch/backup in namespace default
2020/01/04 14:30:10 [INFO] Adding data to list
...
2020/01/04 14:30:29 [INFO] default/backupjob-1578148210 is running
2020/01/04 14:30:37 [INFO] default/backupjob-1578148210 finished successfully

两个卷的备份均已完成,查看 S3 的情况:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ s3cmd la
DIR   s3://dustise/data/
DIR   s3://dustise/index/
DIR   s3://dustise/keys/
DIR   s3://dustise/snapshots/
2020-01-04 14:30       155   s3://dustise/config

发现已经初始化了一个备份结构。

还原

备份成功之后,我们希望还原一下,看看备份的内容。

新建一个 PVC 用作还原目标:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: restore
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi

创建一个还原命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: backup.appuio.ch/v1alpha1
kind: Restore
metadata:
name: restore2pvc
namespace: default
spec:
backend:
repoPasswordSecretRef:
key: password
name: backup
s3:
accessKeyIDSecretRef:
key: token
name: s3secret
bucket: dustise
endpoint: https://s3.amazonaws.com
secretAccessKeySecretRef:
key: key
name: s3secret
restoreMethod:
folder:
claimName: restore

查看运行日志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl logs -f k8up-1578112449-84d7d4d6cc-q6qsh
2020/01/04 14:43:45 [INFO] Received restore job restore-now in namespace default
2020/01/04 14:43:45 [INFO] default/restorejob-1578149025 is running
2020/01/04 14:43:45 [INFO] default/restorejob-1578149025 is running
2020/01/04 14:43:59 [INFO] default/restorejob-1578149025 is running
2020/01/04 14:44:15 [INFO] default/restorejob-1578149025 finished successfully

查看该卷内容,会发现其中有一个 data/data 目录,包含了我们的备份内容。

附录

连接

  • https://k8up.io/
  • https://github.com/restic/restic

源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: debugger
name: debugger
spec:
replicas: 1
selector:
matchLabels:
app: debugger
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: debugger
spec:
containers:
- image: dustise/sleep
name: sleep
resources: {}
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: data
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: data
annotations:
appuio.ch/backup: "true"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪架构师 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
介绍一个不太小的工具—Stash
AppCode Stash 是一个构建在 Restic 基础之上的工具,用于备份 Kubernetes 上运行的有状态应用,它使用一个有趣的 Sidecar,能够方便的通过共享卷的方式来对 RWO 模式的存储卷进行备份。提供了批量备份、备份模板、可扩展的应用(主要是数据库)备份等功能。备份目标包括 Kubernetes 卷、S3 等常见设施。主要功能包括:
崔秀龙
2020/02/19
2.1K0
使用 Velero 备份还原 Kubernetes 集群
Velero(https://velero.io)(可以提供备份和还原 Kubernetes 集群资源和持久卷的能力,你可以在公有云或本地搭建的私有云环境安装 Velero,可以为你提供以下能力:
我是阳明
2021/10/08
1.2K1
使用Velero实现K8S集群资源备份到对象存储COS
开源工具 Velero(旧版本名称为 Heptio Ark)可以安全地备份和还原、执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷。在容器服务 TKE 集群或自建 Kubenetes 集群中部署 Velero 可以实现以下功能:
Lcry
2022/11/29
1.6K0
使用Velero实现K8S集群资源备份到对象存储COS
18-Kubernetes进阶之应用与持久化数据卷备份迁移实践
Velero 特点: 您可以备份或恢复集群中的所有对象,也可以按类型、命名空间和/或标签过滤对象。
全栈工程师修炼指南
2022/09/29
2K0
18-Kubernetes进阶之应用与持久化数据卷备份迁移实践
使用 Velero 备份还原 Kubernetes 集群资源
作者:仇明,中国移动云能力中心软件研发工程师,专注于云原生、微服务、算力网络等领域。 简介 Velero前身是Heptio Ark ,是由GO语言编写的一款用于灾难恢复和迁移工具,可以安全地备份、恢复和迁移Kubernetes集群资源和持久卷。 Velero主要提供以下能力 • 备份Kubernetes 集群资源,并在资源丢失情况下进行还原 • 将集群资源迁移到其他集群 • 将生产集群复制到开发和测试集群 Velero 主要组件 • Velero 组件主要包括服务器端和客户端两部分 • 服务端:运行在你Ku
博文视点Broadview
2023/04/12
1.5K0
使用 Velero 备份还原 Kubernetes 集群资源
Longhorn+K8S+KubeSphere云端数据管理,实战 Sentry PostgreSQL 数据卷增量快照/备份与还原
非官方 k8s helm charts,大规模吞吐需建设微服务集群/中间件集群/边缘存储集群。
为少
2023/02/22
6680
Longhorn+K8S+KubeSphere云端数据管理,实战 Sentry PostgreSQL 数据卷增量快照/备份与还原
k8s集群备份与迁移
Velero 是一个用Go语言开发的开源工具,用于 Kubernetes 集群的备份、恢复、灾难恢复和迁移。
SRE运维手记
2024/09/13
2700
k8s集群备份与迁移
你有快速备份和迁移 Kubernetes 集群应用以及持久化数据的需求吗,Velero 助你秒实现!
Heptio Velero ( 以前的名字为 ARK) 是一款用于 Kubernetes 集群资源和持久存储卷(PV)的备份、迁移以及灾难恢复等的开源工具。
iMike
2019/11/07
4K0
你有快速备份和迁移 Kubernetes 集群应用以及持久化数据的需求吗,Velero 助你秒实现!
kubernetes与velero的第一次尝试
接上文:Kubernetes中gitlab的一次迁移。nexus也要迁移一下。这里更想体验一些velero。很多文章上面看到过:https://mp.weixin.qq.com/s/VC6kVfcBCUQfG6RwM6F1QA 。腾讯云TKE文档中也有类似的例子:https://cloud.tencent.com/document/product/457/50122。不想使用传统方式了想体验一下velero!
对你无可奈何
2022/03/18
1K4
备份与迁移k8s集群神器
前言 一般来说大家都用etcd备份恢复k8s集群,但是有时候我们可能不小心删掉了一个namespace,假设这个ns里面有上百个服务,瞬间没了,怎么办?
院长技术
2020/06/12
7820
使用 Velero 跨云平台迁移集群资源到 TKE
李全江(jokey),腾讯云工程师,热衷于云原生领域。目前主要负责腾讯云 TKE 的售中、售后的技术支持,根据客户需求输出合理技术方案与最佳实践。 概述 Velero[1] 是一个非常强大的开源工具,可以安全地备份和还原,执行灾难恢复以及迁移Kubernetes群集资源和持久卷,可以在 TKE 平台上使用 Velero 备份、还原和迁移集群资源,关于如何使用请参阅 使用对象存储 COS 作为 Velero 存储实现集群资源备份和还原[2] 和 在 TKE 中使用 Velero 迁移复制集群资源,本文将介绍
腾讯云原生
2021/03/29
1.1K0
使用腾讯云对象存储 COS 作为 Velero 后端存储,实现集群资源备份和还原
Velero(以前称为 Heptio Ark)是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷,可以在 TKE 集群或自建 Kubenetes 集群中部署 Velero 用于:
云存储
2020/12/24
3.3K0
【K8S专栏】Kubernetes集群管理
Kubernetes作为容器的编排平台,它是以集群的形式为业务提供服务。所以在日常的工作中,作为Kubernetes平台的维护者,会经常对集群进行管理。
没有故事的陈师傅
2022/09/15
1.5K0
【K8S专栏】Kubernetes集群管理
使用Operator在K8S部署MySQL
目前研究如何在K8S上使用MySQL Operator对MySQL进行部署及管理,汇总研究过程形成此文,分享出来希望能对学习者提供帮助,若有建议请不吝指出。
运维部落
2022/01/18
6.1K1
使用Operator在K8S部署MySQL
Longhorn 高级使用之备份恢复与 ReadWriteMany
Longhorn 提供了备份恢复功能,要使用这个功能我们需要给卷创建一个 snapshot 快照,快照是 Kubernetes Volume 在任何指定时间点的状态。
我是阳明
2022/04/06
6950
Longhorn 高级使用之备份恢复与 ReadWriteMany
K8S学习笔记之k8s使用ceph实现动态持久化存储
本文章介绍如何使用ceph为k8s提供动态申请pv的功能。ceph提供底层存储功能,cephfs方式支持k8s的pv的3种访问模式ReadWriteOnce,ReadOnlyMany ,ReadWriteMany ,RBD支持ReadWriteOnce,ReadOnlyMany两种模式
Jetpropelledsnake21
2019/05/31
2.6K0
k8s的数据存储
● 在前面已经提到,容器的生命周期可能很短,会被频繁的创建和销毁。那么容器在销毁的时候,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器中的数据,kubernetes引入了Volume的概念。
大忽悠爱学习
2022/09/28
1.7K0
k8s的数据存储
用 Minio 快速启动 Velero 实现 Kubernetes资源备份
. Velero 属于 VMWare 开源的 Kubernetes 集群备份、恢复、迁移工具.
philentso
2022/12/12
8160
kubernetes使用ceph存储
管理存储是管理计算的一个明显问题。PersistentVolume子系统为用户和管理员提供了一个API,用于抽象如何根据消费方式提供存储的详细信息。于是引入了两个新的API资源:PersistentVolume和PersistentVolumeClaim
yuezhimi
2020/09/30
3.1K0
云原生MySQL初探之一
云原生概念近些年越来越火热与普及,但是在MySQL领域似乎一直没有太大的动静。貌似DBA们都岁月静好的坚守传统的方式。我认为主要原因两点:
老叶茶馆
2021/03/30
1.3K0
推荐阅读
相关推荐
介绍一个不太小的工具—Stash
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验