在Debian上恢复Kubernetes集群的步骤
etcd是Kubernetes集群的状态存储,恢复etcd是集群恢复的关键步骤。
sudo systemctl stop etcd
,停止etcd进程。/var/lib/etcd
),避免旧数据冲突:sudo rm -rf /var/lib/etcd/*
。export ETCDCTL_API=3
etcdctl snapshot restore /path/to/backup/etcd-snapshot.db \
--data-dir=/var/lib/etcd \
--initial-cluster "node1=https://192.168.1.10:2380,node2=https://192.168.1.11:2380" \
--initial-cluster-token "etcd-cluster-1" \
--initial-advertise-peer-urls "https://192.168.1.10:2380"
注:--initial-cluster
和--initial-cluster-token
需与备份时的集群配置一致。sudo systemctl start etcd
,并重启kubelet以应用更改:sudo systemctl restart kubelet
。若使用Velero备份了集群资源(如Deployments、Services、PV等),可通过Velero快速恢复。
wget https://github.com/vmware-tanzu/velero/releases/download/v1.14.1/velero-v1.14.1-linux-amd64.tar.gz
tar -xzvf velero-v1.14.1-linux-amd64.tar.gz
sudo cp velero-v1.14.1-linux-amd64/velero /usr/bin/
my-backup
),Velero会自动恢复备份中的资源:velero restore create --from-backup my-backup
可选:添加--target-namespace
参数恢复到指定命名空间,或--include-resources
过滤特定资源类型。kubectl get nodes -o wide # 查看节点是否Ready
kubectl get pods --all-namespaces # 查看Pod是否Running
kubectl get services # 查看服务是否正常
若备份了集群资源清单(如cluster-backup.yaml
),可通过kubectl重新应用清单恢复资源。
kubectl apply -f cluster-backup.yaml
注:清单需包含Deployments、Services、ConfigMaps、Secrets等核心资源定义。rsync
复制NFS目录、rbd export
恢复Ceph卷)。Ready
(kubectl get nodes
),Pod状态为Running
(kubectl get pods --all-namespaces
)。journalctl -u kubelet -f # 实时查看kubelet日志
journalctl -u etcd -f # 实时查看etcd日志