简介
这是在建筑版本之后的实用版本。
观看与文章结尾链接的活动中的视频!
我应该备份什么?
持久数据保护
正如我在
构建部分的开头提到的那样,随着在容器世界中运行企业应用程序的需求增加,容器也开始具有持久性数据。永久数据如果丢失,会对企业产生重大影响,并且是必须可靠保护的一部分。
备份容器环境
我们认为仅保护容器环境中的持久性数据是不够的。
建立一个容器?K8s环境不是那么容易。对于习惯于构建它的人来说,这可能不是问题,但是艰难地构建的环境将被破坏,再次挑战将需要大量的精神力量。
此外,如果在实际开始操作时破坏了环境本身,则各种吊舱正在运行,并且它成为许多工程师使用的基础。从容器环境管理员的angular来看,脊柱会冻结。
还必须考虑保护容器环境本身,以便在极少数情况下将此类风险降到最低并轻松恢复。
永久数据备份
实际上,一旦部署了客户端容器,您要做的就是从NetBackup备份任何数据,这非常容易。
在NetBackup管理控制台中,
?指定标准策略
?还提供了Accelerator(永久增量备份功能)
?备份计划设置
?识别客户端容器的主机名
?指定备份目标区域
您要做的就是使用上述设置创建并执行备份策略。
即使在容器环境中,也可以通过与以前相同的操作来保护持久性数据。
容器环境备份
应该保护什么?
这次,我们以保护k8s环境为例与HPE进行了联合验证。
k8s中有一个称为" / etcd"的区域,这是k8s集群的核心。
通常,主节点本身是集群的,那么您是否需要备份?您可能会想到,集群是可以提高系统可用性并确保正常运行时间的解决方案,但它不能作为备份。例如,如果操作错误导致更新错误,并且其他节点将其同步,则环境将被破坏。也可能是错误或勒索软件之类的网络攻击。备份是唯一可以免受这些攻击的解决方案,因此可以安全地保护" / etcd"。
etcd备份验证环境
验证环境如下。
etcd
的备份流
①创建一个JobPod,它定期拍摄/ etcd的快照
②将备份文件保存在容器存储器
中
job_sample.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | apiVersion: batch/v1beta1 kind: CronJob metadata: name: etcd-snapshot namespace: veritas spec: concurrencyPolicy: Forbid schedule: "*/10 * * * *" jobTemplate: spec: template: spec: restartPolicy: OnFailure containers: - name: etcd-snapshot image: fideltak/etcdctl:1.0 imagePullPolicy: IfNotPresent args: - "--debug" - "--endpoints=https://[127.0.0.1]:2379" - "--cacert=/etc/kubernetes/pki/etcd/ca.crt" - "--key=/etc/kubernetes/pki/etcd/server.key" - "--cert=/etc/kubernetes/pki/etcd/server.crt" - "snapshot" - "save" - "/veritas/k8s-etcd-backup.db" volumeMounts: - mountPath: /etc/kubernetes/pki/etcd name: etcd-certs readOnly: true - mountPath: /veritas name: veritas-backup tolerations: - key: node-role.kubernetes.io/master effect: NoSchedule affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/master operator: Exists hostNetwork: true volumes: - name: etcd-certs hostPath: path: "/etc/kubernetes/pki/etcd" - name: veritas-backup persistentVolumeClaim: claimName: veritas-pvc readOnly: false |
③从NetBackup客户端容器
引用容器存储中的备份文件。
可以从客户端容器中看到备份文件(k8s-etcd-backup.db)↓
1 2 3 4 5 | root@test:/veritas# ls -la total 105529 drwxrwxrwx 1 root root 1 Feb 14 10:53 . drwxr-xr-x 1 root root 43 Feb 14 10:18 .. -rw-r--r-- 1 root root 108060704 Feb 14 10:53 k8s-etcd-backup.db |
④通过NetBackp客户端容器备份到重复数据删除池
之后,以与备份持久数据相同的方式,使用NetBackup创建并执行备份策略。
当将k8s与云服务一起使用时,主节点通常是不可见的,因此在这种情况下,使用相同的方法备份清单是安全的。
恢复etcd
的流程
①使用NetBackup将etcd备份数据还原到容器存储
(2)执行Job扩展文件以使其可被Etcd读取
③还原到主节点的本地目录
这次,为进行验证,我们读取了扩展为etcd容器的数据并确认了其正常性。
在生产环境中,您需要还原到/ var / lib / etcd区域。
restore-sample.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | apiVersion: v1 kind: Pod metadata: name: etcd-restore namespace: veritas labels: app: etcd-restore spec: restartPolicy: Never containers: - name: etcd-restore image: fideltak/etcdctl:1.0 imagePullPolicy: IfNotPresent args: - "--debug=true" - "--endpoints=http://[127.0.0.1]:2379" - "--name=master" - "--data-dir=/veritas/restore/etcd-from-backup" - "--initial-cluster=master=http://127.0.0.1:2380" - "--initial-advertise-peer-urls=http://127.0.0.1:2380" - "--user=root" - "snapshot" - "restore" - "/veritas/k8s-etcd-backup.db" volumeMounts: - mountPath: /veritas name: veritas-backup - mountPath: /veritas/restore subPath: restore name: veritas-backup volumes: - name: veritas-backup persistentVolumeClaim: claimName: veritas-pvc readOnly: false |
④按照官方程序重新启动Etcd容器。
结论
怎么样了?
在k8s的世界中,有必要做到这一点,但是在验证之后,我们还发布了示例代码,因此我认为此门槛已经降低。如果您能够确定一旦建立了该机制就可以非常轻松地完成备份,那就太好了。
在每天都在加速增长的容器区域,Veritas牢记这一点来保护数据。
请将其留给Veritas,后者可以保护包括容器环境在内的数据。
我们想借此机会感谢HPE在核实此事方面的合作。
请与HPE和其他Veritas合作伙伴联系,以介绍和构建容器环境基础架构!
也请在Veritas技术活动上观看视频!
点击这里进行业务洽谈咨询
在填写本文的查询时,请确保在"评论/通讯"字段中输入#GWC标签。
您的信息将根据Veritas的隐私政策进行管理。
其他链接
[摘要文章]也请链接到Veritas Technologies的所有文章!