Backup/Restore

Backup and restore operations are crucial for maintaining data integrity and recoverability. This can be done manually by backing up the etcd database or using kube-apiserver snapshots.

Backup etcd Manually

Creates a snapshot of the etcd database, which can be used for disaster recovery.

ETCDCTL_API=3 etcdctl snapshot save <backup-file> \
--endpoints=https://127.0.0.1:2379 \
--cacert=<path-to-cafile> \
--cert=<path-to-certfile> \
--key=<path-to-keyfile>

Restore etcd Manually

Restores the etcd database from a snapshot.

ETCDCTL_API=3 etcdctl snapshot restore <backup-file> \
  --data-dir=/var/lib/etcd-from-backup

Backup Using kube-apiserver

Fetches critical Kubernetes components' state for backup.

kubectl get --raw /apis/coordination.k8s.io/v1/namespaces/kube-system/leases/kube-controller-manager -o json > kube-controller-manager.json
kubectl get --raw /apis/coordination.k8s.io/v1/namespaces/kube-system/leases/kube-scheduler -o json > kube-scheduler.json

Restore Using kube-apiserver

Restores Kubernetes components' state from backup.

kubectl apply -f kube-controller-manager.json
kubectl apply -f kube-scheduler.json