镜像备份参考
1、提前准备好备份镜像存放地方
2、根据实际情况使用K8S定时任务还是Linux定时任务
3、根据实际节点数量进行备份
备份脚本
docker 方式
ConfigMap(V1 弃用)
apiVersion: v1
data:
backup.sh: |-
#!/usr/bin/env sh
[ -d ./images ] || mkdir ./images
echo > ./images/map.txt
docker images | grep -v REPOSITORY | grep -v rancher | grep -v "<none>" | \
awk '{print "echo 导出:"$1":"$2";echo "$3" : "$1":"$2" >> ./images/map.txt;[ -f ./images/"$3".tar ] || docker save -o ./images/"$3".tar "$1":"$2}' | sh
kind: ConfigMap
metadata:
name: pai-image-backup-conf
namespace: pai-cloud
ConfigMap(V2 推荐)
apiVersion: v1
data:
backup.sh: |-
#!/usr/bin/env sh
[ -d ./images ] || mkdir ./images
echo > ./images/map.txt
docker images | grep -v REPOSITORY | grep -v rancher | grep -v "<none>" | \
awk '{print "name="$1";name=${name##*/}-"$2".tar;echo 导出:"$1":"$2" 为 ./images/$name;docker save -o ./images/$name "$1":"$2}' | sh
kind: ConfigMap
metadata:
name: pai-image-backup-conf
namespace: pai-cloud
containerd 方式
ConfigMap(推荐)
apiVersion: v1
data:
backup.sh: |-
#!/usr/bin/env sh
[ -d ./images ] || mkdir ./images
crictl images | grep -v IMAGE | grep -v rancher | grep -v "<none>" | \
awk '{print "name="$1";name=${name##*/}-"$2".tar;echo 导出:"$1":"$2" 为 ./images/$name;ctr -n k8s.io i export ./images/$name "$1":"$2}' | sh
kind: ConfigMap
metadata:
name: pai-image-backup-conf
namespace: pai-cloud
定时任务
工作负载
apiVersion: batch/v1
kind: CronJob
metadata:
annotations:
k8s.kuboard.cn/displayName: 镜像备份
labels:
k8s.kuboard.cn/name: pai-image-backup
name: pai-image-backup
namespace: pai-cloud
spec:
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 1
jobTemplate:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/name: pai-image-backup
spec:
backoffLimit: 1
template:
metadata:
creationTimestamp: null
spec:
containers:
- command:
- sh
- /home/backup.sh
image: 'centos:centos7.9.2009'
imagePullPolicy: IfNotPresent
name: pai-image-backup
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /data
name: volume-backup
- mountPath: /home/backup.sh
name: volume-sh
subPath: backup.sh
- mountPath: /etc/localtime
name: host-time
- mountPath: /usr/bin/docker
name: docker
- mountPath: /var/run/
name: dockersock
dnsPolicy: ClusterFirst
restartPolicy: Never
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- name: volume-backup
nfs:
path: /data/sdb/nfs/imagebackup
server: 192.168.1.100
- configMap:
defaultMode: 420
name: pai-image-backup-conf
name: volume-sh
- hostPath:
path: /etc/localtime
type: ''
name: host-time
- hostPath:
path: /usr/bin/docker
type: File
name: docker
- hostPath:
path: /var/run/
type: Directory
name: dockersock
schedule: 0 2 * * *
successfulJobsHistoryLimit: 3
suspend: false
Kubernets ETCD 数据库备份
可用于集群环境异常时偿试恢复,备份命令如下:
sealos etcd save --name etcd-202310250830.bak
# 默认输出在/opt/sealos/etcd-backup目录下
注意:备份出来的文件存放在安全的异地空间
文档更新时间: 2024-07-19 13:37 作者:管理员