一键导入
k3s-backup
Backup and recovery solution for K3s clusters. Includes scheduled, pre-shutdown, and manual backup strategies with recovery procedures.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Backup and recovery solution for K3s clusters. Includes scheduled, pre-shutdown, and manual backup strategies with recovery procedures.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Systematic process for analyzing and modernizing legacy applications to comply with the 12-Factor App methodology. Covers code analysis, configuration externalization, dependency management, and container/Kubernetes best practices.
Configure high-availability load balancing with HAProxy and NGINX reverse proxies. Covers health checks, automatic failover, sticky sessions, and stats monitoring for containerized backends.
Deploy serverless applications on Cloudflare Workers. Covers project setup, JavaScript handler patterns, routing, deployment with Wrangler, and API token configuration. Suitable for APIs, proxies, edge computing, and request transformation.
Deploy containerized applications to AWS EC2 and expose them publicly via Cloudflare Tunnel with automatic HTTPS. Eliminates need for load balancers, SSL certificates, or public inbound ports.
Guide for using Beads (bd), a dependency-aware issue tracker for AI agents. Issues chained together like beads.
A comprehensive guide for configuring and using Terrateam, an open-source GitOps CI/CD platform for Terraform and OpenTofu. Covers configuration file structure, access control, workflows, OIDC authentication, drift detection, and best practices for managing infrastructure through pull requests.
| name | k3s-backup |
| description | Backup and recovery solution for K3s clusters. Includes scheduled, pre-shutdown, and manual backup strategies with recovery procedures. |
| license | MIT |
| metadata | {"author":"Stakpak <team@stakpak.dev>","version":"1.0.20"} |
sudo /usr/local/bin/k3s-backup.sh
ls -lh /backup/k3s/
sudo /root/k3s-recovery.sh $(ls -t /backup/k3s/*.tar.gz | head -1)
/backup/k3s/ on master node| Type | Schedule | Trigger | Downtime |
|---|---|---|---|
| Scheduled | Daily 2:00 AM | Cron job | ~30 sec |
| Pre-Shutdown | Before reboot/shutdown | Systemd service | ~30 sec |
| Manual | On-demand | Command | ~30 sec |
Included:
/var/lib/rancher/k3s/server/db/)/etc/rancher/k3s/)Not Included:
Location: /usr/local/bin/k3s-backup.sh
#!/bin/bash
BACKUP_DIR="/backup/k3s"
DATE=$(date +%Y%m%d-%H%M%S)
mkdir -p $BACKUP_DIR
systemctl stop k3s
tar -czf $BACKUP_DIR/k3s-backup-$DATE.tar.gz \
/var/lib/rancher/k3s/server/ \
/etc/rancher/k3s/
systemctl start k3s
ls -t $BACKUP_DIR/k3s-backup-*.tar.gz | tail -n +11 | xargs -r rm
echo "Backup completed: k3s-backup-$DATE.tar.gz"
Location: /root/k3s-recovery.sh
#!/bin/bash
BACKUP_FILE=$1
if [ -z "$BACKUP_FILE" ]; then
echo "Usage: $0 /backup/k3s/k3s-backup-TIMESTAMP.tar.gz"
ls -lh /backup/k3s/
exit 1
fi
echo "Stopping K3s..."
systemctl stop k3s
echo "Removing old data..."
rm -rf /var/lib/rancher/k3s/server/
rm -rf /etc/rancher/k3s/
echo "Restoring from $BACKUP_FILE..."
tar -xzf $BACKUP_FILE -C /
echo "Starting K3s..."
systemctl start k3s
sleep 30
echo "Verifying cluster..."
kubectl get nodes
kubectl get pods -A
echo "Recovery complete!"
Location: /etc/crontab
0 2 * * * root /usr/local/bin/k3s-backup.sh >> /var/log/k3s-backup.log 2>&1
Location: /etc/systemd/system/k3s-pre-shutdown.service
[Unit]
Description=K3s Pre-Shutdown Backup
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/k3s-backup.sh
TimeoutStartSec=300
[Install]
WantedBy=halt.target reboot.target shutdown.target
# 1. Create backup script
sudo tee /usr/local/bin/k3s-backup.sh << 'EOF'
[script content]
EOF
sudo chmod +x /usr/local/bin/k3s-backup.sh
# 2. Create recovery script
sudo tee /root/k3s-recovery.sh << 'EOF'
[script content]
EOF
sudo chmod +x /root/k3s-recovery.sh
# 3. Add cron job
echo "0 2 * * * root /usr/local/bin/k3s-backup.sh >> /var/log/k3s-backup.log 2>&1" | sudo tee -a /etc/crontab
# 4. Create and enable pre-shutdown service
sudo tee /etc/systemd/system/k3s-pre-shutdown.service << 'EOF'
[service content]
EOF
sudo systemctl enable k3s-pre-shutdown.service
ls -l /usr/local/bin/k3s-backup.sh
ls -l /root/k3s-recovery.sh
cat /etc/crontab | grep k3s-backup
sudo systemctl status k3s-pre-shutdown.service
sudo systemctl is-enabled k3s-pre-shutdown.service
sudo /usr/local/bin/k3s-backup.sh
ls -lh /backup/k3s/
tail -f /var/log/k3s-backup.log
cat /var/log/k3s-backup.logls -lt /backup/k3s/ | head -5ls -lt /backup/k3s/ | head -5sudo journalctl -u k3s-pre-shutdown.service -b -1# List backups
ls -lh /backup/k3s/
# Restore from specific backup
BACKUP_FILE="/backup/k3s/k3s-backup-TIMESTAMP.tar.gz"
sudo /root/k3s-recovery.sh $BACKUP_FILE
# Verify cluster
kubectl get nodes
kubectl get pods -A
kubectl get pv,pvc -A
sudo /root/k3s-recovery.sh $(ls -t /backup/k3s/*.tar.gz | head -1)
# List backup contents
sudo tar -tzf /backup/k3s/k3s-backup-TIMESTAMP.tar.gz | less
# Extract specific files
sudo tar -xzf /backup/k3s/k3s-backup-TIMESTAMP.tar.gz \
var/lib/rancher/k3s/server/node-token \
-C / --strip-components=0
# 1. Reinstall K3s on master node
curl -sfL https://get.k3s.io | K3S_TOKEN=<your-token> sh -s - server --disable=traefik --tls-san <master-ip> --advertise-address <master-ip> --node-external-ip <master-ip>
# 2. Stop K3s
sudo systemctl stop k3s
# 3. Run recovery
sudo /root/k3s-recovery.sh /path/to/backup.tar.gz
# 4. Verify and rejoin workers if needed
kubectl get nodes
ssh <worker-user>@<worker-ip> "sudo systemctl restart k3s-agent"
| Step | Duration |
|---|---|
| Stop K3s | ~5 seconds |
| Remove old data | ~10 seconds |
| Restore backup | ~20-40 seconds |
| Start K3s | ~30 seconds |
| Verify cluster | ~30 seconds |
| Total | ~2 minutes |
sudo /root/k3s-recovery.sh $(ls -t /backup/k3s/*.tar.gz | head -1)