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