kubernetes 單節點備份與恢復

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

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

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

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 工具安裝git

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
備份:(基於證書的備份)github

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

恢復:vim

 
 

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

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

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

#!/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 initpost

kubeadm init --config ../conf/kubeadm.yaml  --ignore-preflight-errors=all(注意這個選項比較重要,忽略錯誤,若是不帶的話 會提示那些目錄裏面 有數據)
node節點從新:kebeadm join
相關文章
相關標籤/搜索