个人笔记、与各位的环境不同、自行修改
编写dockfile镜像
1、首先我利用的是k8s自带的基础容器镜像
[root@qinghuanyeye ~]# grep 'image:' /etc/kubernetes/manifests/etcd.yaml
image: registry.aliyuncs.com/google_containers/etcd:3.5.6-0
2、 编写镜像
[root@qinghuanyeye ~]# cat Dockerfile
FROM registry.aliyuncs.com/google_containers/etcd:3.5.6-0
MAINTAINER qinghuanyeye
CMD ["/bin/sh","-c","etcdctl --endpoints=${ETCD_HOST}:${ETCD_PORT} --cacert=/certs/ca.crt --cert=/certs/peer.crt --key=/certs/peer.key snapshot save /backup/etcd-`date +%F-%T`.backup"]
3、编译镜像
[root@qinghuanyeye ~]# docker build -t qinghuanyeye.com/backup-etcd/tools:v1 .
4、你自行导入镜像
编写资源清单
[root@qinghuanyeye ~]# cat backup-etc.yaml
apiVersion: v1
kind: Secret
metadata:
name: ceph-admin-secret
namespace: etcd-backup
stringData:
key: **********************==
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: backup-etcd
namespace: etcd-backup
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
volumes:
- name: certs
cephfs:
monitors:
- ceph-1-1:6789
- ceph-1-2:6789
- ceph-1-3:6789
path: /etcd-certs
user: admin
secretRef:
name: ceph-admin-secret
readOnly: true
- name: bak
cephfs:
monitors:
- ceph-1-1:6789
- ceph-1-2:6789
- ceph-1-3:6789
path: /backup
user: admin
secretRef:
name: ceph-admin-secret
containers:
- name: etcd-backup
image: qinghuanyeye.com/backup-etcd/tools:v1
imagePullPolicy: IfNotPresent
volumeMounts:
- name: certs
mountPath: /certs
- name: bak
mountPath: /backup
env:
- name: ETCD_HOST
value: ceph-1-1
- name: ETCD_PORT
value: "2379"
restartPolicy: OnFailure
[root@qinghuanyeye ~]# kubectl apply -f backup-etc.yaml
自行测试查看
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
常见问题解答:K8s 定时备份
1. 什么是 Kubernetes 定时备份?
Kubernetes 定时备份是一种确保 Kubernetes 集群中的数据和配置的持续性和可恢复性的方法。它涉及到定期备份集群中的资源状态、持久化卷数据、配置文件等,以便在出现故障或数据丢失时能够快速恢复。定时备份通常包括对集群中的 etcd 数据库、应用程序数据、以及各种配置文件和持久化存储的备份。
Kubernetes 定时备份可以通过多种方式实现,包括使用 Kubernetes 原生工具、第三方备份解决方案以及自定义备份脚本。选择合适的备份工具和策略取决于集群的规模、数据的重要性以及恢复要求。
2. 如何设置 Kubernetes 定时备份?
设置 Kubernetes 定时备份的步骤包括:
-
选择备份工具
许多备份解决方案可以帮助自动化备份过程,包括 Velero、Stash 和 Kasten K10 等。这些工具提供了丰富的功能,如增量备份、恢复点创建和跨集群备份。 -
配置备份计划
根据选择的工具,配置备份计划通常涉及编写 YAML 配置文件来定义备份策略和计划。例如,Velero 允许用户创建备份计划对象(BackupSchedule),通过指定备份的频率、存储位置等。 -
验证备份
配置完成后,应定期验证备份的有效性。可以通过恢复操作来测试备份的完整性,确保在实际需要时可以成功恢复数据。 -
监控和管理
设置适当的监控和警报机制,以便及时了解备份状态和可能出现的问题。许多备份工具提供了集成的监控功能,也可以通过集成的日志管理工具来跟踪备份活动。
3. Kubernetes 定时备份的最佳实践是什么?
-
确保备份覆盖所有关键数据
定时备份不仅要涵盖 etcd 数据库,还要包括持久化卷(PV)、ConfigMap、Secrets 和其他集群资源。确保所有重要的数据都有备份,以防止数据丢失。 -
使用多种存储位置
为了提高数据的安全性,建议将备份存储在多个位置。例如,可以将备份存储在云存储服务和本地存储中,以防止单点故障。 -
定期测试恢复过程
备份的最终目的是能够在发生故障时快速恢复数据。因此,定期进行恢复测试,以验证备份的有效性和恢复过程的顺利进行是非常重要的。 -
自动化备份管理
利用自动化工具和脚本来管理备份过程,减少人为操作错误的风险。自动化工具可以定期执行备份任务,并提供备份状态的实时报告。 -
遵循合规要求
确保备份策略符合行业和法规的要求,例如数据保留政策和隐私保护标准。这可以帮助避免法律和合规问题,并确保数据在合规框架内得到保护。