kubernetes 單節點備份與恢復

Kubernetes主節點災備恢復的相關步驟,供在發生k8s master崩潰時操作(前提條件:使用kubeadm安裝方式安裝)
一,Etcd數據備份及恢復
單節點:
單節點基於文件備份即可,使用kubeadm安裝,etcd存儲於/var/lib/etcd目錄。
備份:

cp -r /var/lib/etcd /bakup/ETCD$DATE

恢復:
如果etcd的pod 正在運行當中首先要停止ETCD(停止方式可以修改etcdyaml文件的版本號,使用kubeadm安裝的etcdpei配置文件在/etc/kubernetes/manifests目錄下的etcd.yaml 修改images版本號然後拷貝還原改回image的版本號etcd 恢復啓動

vim /etc/kubernetes/manifests/etcd.yaml  #修改版本號停止
mv /var/lib/etcd /tmp/   #轉移備份原來的etcd
cp -r /backup/etcd /var/lib/etcd
vim /etc/kubernetes/manifests/etcd.yaml # 還原版本號啓動

一(1),集羣恢復(使用etcdctl工具恢復) 待測試 同理需要先停止etcd 附管理指南:http://sealyun.com/post/etcd-manage/
etcdctl 工具安裝

curl -L https://github.com/coreos/etcd/releases/download/v3.3.2/etcd-v3.3.2-linux-amd64.tar.gz -o etcd-v3.3.2-linux-amd64.tar.gz
tar zxf etcd-v3.3.2-linux-amd64.tar.gz
mv etcd-v3.3.2-linux-amd64/etcd* /usr/local/bin/

k8s會使用etcd v3版本的API記錄數據。而默認etcdctl是使用v2版本的API,查看不到v3的數據。設置環境變量ETCDCTL_API=3
備份:(基於證書的備份)

ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --endpoints=https://127.0.0.1:2379 snapshot save snapshot.db

恢復:

二:Master節點控制組件的備份及恢復
master主節點 恢復 前提條件:待恢復的機器上,機器名稱和ip地址需要與崩潰前的主節點配置完全一樣
使用kubeadm安裝
備份:
1,/etc/kubernetes/目錄下的所有文件(證書,manifest文件)

2,用戶主目錄下.kube/config文件(kubectl連接認證)

3,/var/lib/kubelet/目錄下所有文件(plugins容器連接認證)
恢復:
移除或者備份原有數據附清理腳本(慎用)

#!/bin/bash
kubeadm reset 
kubeadm reset -f
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd

將備份的文件拷貝回原路徑(注意路徑不能拷貝錯誤)
主要幾個路徑如下:

/var/lib/etcd/
/etc/kubernetes/
/var/lib/kubelet/
/var/etcd/  #calico的etcd數據
/root/.kube/config

然後 重新初始化安裝 kubeadm init

kubeadm init --config ../conf/kubeadm.yaml  --ignore-preflight-errors=all(注意這個選項比較重要,忽略錯誤,如果不帶的話 會提示那些目錄裏面 有數據)
node節點重新:kebeadm join
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章