From c3d4600662f02e929e8dc331e4bff48410bb86c3 Mon Sep 17 00:00:00 2001 From: erjemin Date: Tue, 29 Apr 2025 16:22:26 +0300 Subject: [PATCH] mod: backup k3s .. --- kubernetes/k3s-backup.md | 51 +++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/kubernetes/k3s-backup.md b/kubernetes/k3s-backup.md index 70f4aa5..e4ae7c4 100644 --- a/kubernetes/k3s-backup.md +++ b/kubernetes/k3s-backup.md @@ -9,35 +9,49 @@ PersistentVolumeClaims (PVC). Хочется сделать резервную ```bash #!/usr/bin/bash +# Проверяем, что есть каталог для монтирования SAMBA (и создаем его, если нет) +if [ ! -d /media/backup/k3s-backup ]; then + mkdir -p /media/backup/k3s-backup + +fi + # МОНТИРУЕМ SAMBA -- Seagate Personal Cloud -mount -t cifs -o username=erjemin,password= /// /media/backup/ -echo -e "$(date +'%F %R:%S') - монтируем SAMBA '/media/backup':\n$(date +'%F %R:%S') - =========================\n"; +sudo mount -t cifs -o username=erjemin,password= /// /media/backup/ +echo -e "$(date +'%F %R:%S') - монтируем SAMBA '/media/backup':\n$(date +'%F %R:%S') - ========================="; # Проверяем, что на SAMBA-каталоге есть каталог k3s-backup (и создаем его, если нет) if [ ! -d /media/backup/k3s-backup ]; then mkdir -p /media/backup/k3s-backup fi -echo -e "\n\n$(date +'%F %R:%S') - монтируем SAMBA '/media/backup':\n$(date +'%F %R:%S') - =========================\n" >> /media/backup/k3s-backup/backup.log +echo -e "\n\n$(date +'%F %R:%S') - монтируем SAMBA '/media/backup':\n$(date +'%F %R:%S') - =========================" >> /media/backup/k3s-backup/backup.log cd /home/opi # Резервное копирование - # ==== 1 Снапшоты etcd (k3s по умолчанию делает снапшоты каждык 12 часов # в каталоге /var/lib/rancher/k3s/server/db/snapshots) -/usr/bin/zip -r /media/backup/k3s-backup/etcd--$(date +'%F--%H-%M-%S').zip /var/lib/rancher/k3s/server/db/snapshots/ +echo -e "$(date +'%F %R:%S') - ZIP ETCD\n$(date +'%F %R:%S') - =========================" >> /media/backup/k3s-backup/backup.log +umount /media/backup +echo -e "$(date +'%F %R:%S') - ZIP ETCD\n$(date +'%F %R:%S') - =========================" +/usr/bin/zip -r /media/backup/k3s-backup/etcd-------$(date +'%F--%H-%M-%S').zip /var/lib/rancher/k3s/server/db/snapshots/ # ==== 2 Сохранение манифестов +echo -e "$(date +'%F %R:%S') - ZIP MANIFESTS\n$(date +'%F %R:%S') - =========================" >> /media/backup/k3s-backup/backup.log +umount /media/backup +echo -e "$(date +'%F %R:%S') - ZIP MANIFESTS\n$(date +'%F %R:%S') - =========================" /usr/bin/zip -r /media/backup/k3s-backup/manifests--$(date +'%F--%H-%M-%S').zip /home/opi/k3s/ # ==== 3 Сохранение Секретов +echo -e "$(date +'%F %R:%S') - ZIP SECRETS\n$(date +'%F %R:%S') - =========================" >> /media/backup/k3s-backup/backup.log +umount /media/backup +echo -e "$(date +'%F %R:%S') - ZIP SECRETS\n$(date +'%F %R:%S') - =========================" # Получаем список пространств имен namespaces=$(kubectl get ns -o jsonpath='{.items[*].metadata.name}') -archive="secrets--$(date +'%F--%H-%M-%S').zip" +archive="/media/backup/k3s-backup/secrets----$(date +'%F--%H-%M-%S').zip" # Создаем временную директорию tmp_dir=$(mktemp -d) # Перебираем каждое пространство имен for ns in $namespaces; do # kubectl get secret -n "$ns" -o yaml | zip $archive - "secrets-$ns.yaml" - kubectl get secret -n "$ns" -o yaml > "secrets-$ns.yaml" && zip $archive "secrets-$ns.yaml" && rm "secrets-$ns.yaml" + kubectl get secret -n "$ns" -o yaml > "secrets-$ns.yaml" && /usr/bin/zip $archive "secrets-$ns.yaml" && rm "secrets-$ns.yaml" done # ==== 4 Сохранение PVC @@ -48,21 +62,20 @@ done # Чистим старые файлы резервных копий -echo -e "$(date +'%F %R:%S') - удаляем старые файлы бекапов старше 14 дней:\n$(date +'%F %R:%S') - =========================\n" >> /media/backup/k3s-backup/backup.log -/usr/bin/find /media/backup/k3s-backup/ -type f -name "*.zip" -mtime +14 -name "backup.log-*" -delete -echo -e "$(date +'%F %R:%S') - удаляем старые файлы бекапов старше 14 дней:\n$(date +'%F %R:%S') - =========================\n" +echo -e "$(date +'%F %R:%S') - удаляем старые файлы бекапов старше 14 дней:\n$(date +'%F %R:%S') - =========================" >> /media/backup/k3s-backup/backup.log +# /usr/bin/find /media/backup/k3s-backup/ -type f -name "*.zip" -mtime +14 -name "backup.log-*" -delete +/usr/bin/find /media/backup/k3s-backup/ -type f -name "*.*" -mtime +14 -delete +echo -e "$(date +'%F %R:%S') - удаляем старые файлы бекапов старше 14 дней:\n$(date +'%F %R:%S') - =========================" -echo -e "$(date +'%F %R:%S') - ВСЕ РЕЗЕРВНЫЕ КОПИИ K3S В SAMBA:\n$(date +'%F %R:%S') - =========================\n" >> /media/backup/k3s-backup/backup.log +echo -e "$(date +'%F %R:%S') - ВСЕ РЕЗЕРВНЫЕ КОПИИ K3S В SAMBA:\n$(date +'%F %R:%S') - =========================" >> /media/backup/k3s-backup/backup.log ls -alhc /media/backup/k3s-backup/ >> /media/backup/k3s-backup/backup.log -echo -e "$(date +'%F %R:%S') - ВСЕ РЕЗЕРВНЫЕ КОПИИ K3S В SAMBA:\n$(date +'%F %R:%S') - =========================\n" +echo -e "$(date +'%F %R:%S') - ВСЕ РЕЗЕРВНЫЕ КОПИИ K3S В SAMBA:\n$(date +'%F %R:%S') - =========================" ls -alhc /media/backup/k3s-backup/ -# Отсоединяем SAMBA -echo -e "$(date +'%F %R:%S') - отсоединяем SAMBA\n$(date +'%F %R:%S') - =========================\n" >> /media/backup/k3s-backup/backup.log # Ротация лога -if [ $(stat -c %s /media/backup/k3s-backup/backup.log) -gt 10485760 ]; then - mv /media/backup/k3s-backup/backup.log /media/backup/k3s-backup/backup.log-$(date +'%F--%H-%M-%S') - touch /media/backup/k3s-backup/backup.log -fi -umount /media/backup +mv /media/backup/k3s-backup/backup.log /media/backup/k3s-backup/log-backup-$(date +'%F--%H-%M-%S').log +# Отсоединяем SAMBA +echo -e "$(date +'%F %R:%S') - отсоединяем SAMBA\n$(date +'%F %R:%S') - =========================" >> /media/backup/k3s-backup/backup.log +sudo umount /media/backup +echo -e "$(date +'%F %R:%S') - отсоединяем SAMBA\n$(date +'%F %R:%S') - =========================" ``` \ No newline at end of file