- Create a new namespace for the backup system - Implement a cron job for scheduled backups - Add a daemon set to handle backup tasks across nodes - Introduce necessary service accounts, roles, and role bindings - Include environment variable handling and configuration via secrets and config maps - Ensure triggering and execution workflow for backups is efficient This commit establishes a new backup system that utilizes both a cron job and a daemon set to automate backups. It organizes the configurations and credentials needed for S3-compatible storage, allowing for seamless backup management across the specified nodes in the Kubernetes cluster.
33 lines
1.0 KiB
YAML
33 lines
1.0 KiB
YAML
apiVersion: batch/v1
|
|
kind: CronJob
|
|
metadata:
|
|
name: node-backup-job
|
|
namespace: backup-system
|
|
spec:
|
|
# 每天凌晨2点运行
|
|
schedule: "0 2 * * *"
|
|
concurrencyPolicy: Forbid
|
|
jobTemplate:
|
|
spec:
|
|
ttlSecondsAfterFinished: 86400 # 1天后删除已完成的任务
|
|
template:
|
|
spec:
|
|
serviceAccountName: backup-service-account
|
|
nodeSelector:
|
|
#kubernetes.io/hostname: "vkvm-us1"
|
|
region: us
|
|
containers:
|
|
- name: backup-trigger
|
|
image: bitnami/kubectl:latest
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- |
|
|
# 创建触发文件到所有备份 Pod 中
|
|
for pod in $(kubectl get pods -n backup-system -l app=node-backup -o jsonpath='{.items[*].metadata.name}'); do
|
|
echo "触发 Pod $pod 执行备份"
|
|
kubectl exec $pod -n backup-system -- touch /tmp/backup-triggered
|
|
done
|
|
echo "所有节点备份已触发"
|
|
restartPolicy: OnFailure
|