بکاپگیری در کوبرنتیز شامل دو بخش اصلی است:
1️⃣ بکاپ از etcd (پایگاه داده اصلی که تمام وضعیت کلاستر را ذخیره میکند)
2️⃣ بکاپ از منابع Kubernetes (مانند دیپلویمنتها، سرویسها، PVC و غیره)
etcd
قلب کوبرنتیز است و تمامی اطلاعات مربوط به منابع در آن ذخیره میشود. اگر کنترلپلین (Control Plane) را از دست بدهید، میتوانید با ریستور کردن etcd
کل کلاستر را بازیابی کنید.
🔹 بکاپ etcd در یک کلاستر با kubeadm
ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key
✅ این دستور یک اسنپشات کامل از etcd
را در مسیر /backup/etcd-snapshot.db
ذخیره میکند.
🔹 بازیابی etcd در کلاستر
برای بازیابی etcd
، از دستور زیر استفاده کنید:
ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-snapshot.db \
--data-dir /var/lib/etcd
سپس سرویس kube-apiserver
را ریاستارت کنید:
sudo systemctl restart kubelet
برای گرفتن بکاپ از تمامی منابع (دیپلویمنت، سرویس، PV، PVC و ...) در یک namespace
:
kubectl get all -n default -o yaml > backup-all.yaml
✅ این فایل حاوی تعریف تمام منابع در namespace
پیشفرض است.
🔹 برای گرفتن بکاپ از همه namespace
ها:
kubectl get all --all-namespaces -o yaml > full-cluster-backup.yaml
🔹 بکاپ از پادها
kubectl get pods -o yaml > pods-backup.yaml
🔹 بکاپ از سرویسها
kubectl get svc -o yaml > services-backup.yaml
🔹 بکاپ از PVCها
kubectl get pvc -o yaml > pvc-backup.yaml
🔹 بکاپ از Secretها (بدون تغییر Base64)
kubectl get secrets -o yaml | sed -e 's/ data:/ stringData:/g' > secrets-backup.yaml
برای بازیابی، کافی است از دستور kubectl apply -f
استفاده کنید:
kubectl apply -f backup-all.yaml
یا برای بازیابی یک فایل خاص:
kubectl apply -f services-backup.yaml
اگر از NFS، Ceph، یا یک Storage Class استفاده میکنید، باید دادهها را از مسیر mount
شده کپی کنید.
مثلاً برای بکاپ از PV در hostPath
:
tar -czvf pv-backup.tar.gz /var/lib/kubelet/pods
🔹 برای PVCها در NFS یا Ceph کافی است از rsync
یا tar
استفاده کنید:
rsync -avz /mnt/nfs-share/ /backup/nfs-backup/
🔹 اگر میخواهید یک ابزار خودکار برای بکاپ داشته باشید، Velero بهترین گزینه است.
velero install --provider aws --bucket my-backup-bucket --backup-location-config region=us-east-1
🔹 بکاپ کل کلاستر
velero backup create full-backup --include-namespaces=*
🔹 بازیابی بکاپ
velero restore create --from-backup full-backup
✅ اگر etcd
را بکاپ بگیرید، کل وضعیت کلاستر قابل بازیابی است.
✅ گرفتن بکاپ از منابع کوبرنتیز (kubectl get all
) برای بازیابی سریع کانفیگها مفید است.
✅ برای بکاپ از دادههای PVC، باید به استوریج زیرساختی (NFS، Ceph، ...) دسترسی داشته باشید.
✅ استفاده از Velero بکاپگیری را ساده و خودکار میکند.