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

转载于:https://blog.51cto.com/1014810/2341229

你可能感兴趣的:(kubernetes 单节点备份与恢复)