网站首页 > 博客文章 正文
背景
最近由于项目需求使用Sealos工具部署了5套三节点K8S 集群,但是由于客户使用的是虚拟机环境,并且部署的机房经常出现断电的情况,所以其中有几个集群K8S etcd出现了故障,无法对集群进行管理
具体现象
K8S 使用kubectl 命令查看pod 或者Service 状态的时候无法连接到api server
etcd 一直重启,无法成功启动
环境描述
其中一套环境的K8S 信息如下,三个都是Master节点和控制节点,我们环境是对K8S的etcd 30分钟备份一次
K8节点名称 | IP地址 |
master-01 | 192.168.10.100 |
master-02 | 192.168.10.101 |
master-03 | 192.168.10.102 |
ETCD数据还原
- 因为使用sealos安装每台机器上并未安装etcdctl工具,所以需要先安装etcdctl工具,需要根据etcd使用的pod版本选择对应的etcdctl工具,我们使用的是etcd3.4 所以我使用的etdctl也是3.4
- 首先停止etcd 静态pod,进入目录 /etc/kubernetes/manifests ,将etcd.yaml进行改名,三个节点都需要操作
mv etcd.yaml etcd.yamlbak
- 备份三个节点的etcd目录
cp -rfp /var/lib/etcd /root/etcdbak
- 确认etcd pod 和api pod 已经停止,如果没有停止需要stop一下
docker ps | egrep 'etcd|api'
- 还原备份数据
//master-01 节点执行,如果不执行后面还原数据无法操作
rm -rf /var/lib/etcd
//master-01 节点执行还原镜像数据
ETCDCTL_API=3 etcdctl snapshot restore /root/etcsnapshot_20240115.db \
--name master-01 \
--initial-cluster "master-01=https://192.168.10.100:2380,master-02=https://192.168.10.101:2380,master-03=https://192.168.10.102:2380" \
--initial-advertise-peer-urls https://192.168.10.100:2380 \
--data-dir /var/lib/etcd/
//master-02 节点执行,如果不执行后面还原数据无法操作
rm -rf /var/lib/etcd
//master-02 节点执行还原镜像数据
ETCDCTL_API=3 etcdctl snapshot restore /root/etcsnapshot_20240115.db \
--name master-02 \
--initial-cluster "master-01=https://192.168.10.100:2380,master-02=https://192.168.10.101:2380,master-03=https://192.168.10.102:2380" \
--initial-advertise-peer-urls https://192.168.10.101:2380 \
--data-dir /var/lib/etcd/
//master-03 节点执行,如果不执行后面还原数据无法操作
rm -rf /var/lib/etcd
//master-03 节点执行还原镜像数据
ETCDCTL_API=3 etcdctl snapshot restore /root/etcsnapshot_20240115.db \
--name master-03 \
--initial-cluster "master-01=https://192.168.10.100:2380,master-02=https://192.168.10.101:2380,master-03=https://192.168.10.102:2380" \
--initial-advertise-peer-urls https://192.168.10.102:2380 \
--data-dir /var/lib/etcd/
ETCD配置文件还原
cd /etc/kubernetes/manifests
mv etcd.yamlbak etcd.yaml
查看ETCD pod状态
//master-01 确认etcd是否正常运行,需要能正常运行并且不能存在自动重启现象,如果出现需要检查IP和名称是否配置错误
docker ps | grep etcd
//master-02 确认etcd是否正常运行,需要能正常运行并且不能存在自动重启现象,如果出现需要检查IP和名称是否配置错误
docker ps | grep etcd
//master-03确认etcd是否正常运行,需要能正常运行并且不能存在自动重启现象,如果出现需要检查IP和名称是否配置错误
docker ps | grep etcd
查看集群状态
//master-01节点执行查看集群状态,集群所有节点需要为started
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://192.168.10.100:2379,https://192.168.10.101:2379,https://192.168.10.102:2379 member list
//可以看到有主节点
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://192.168.10.100:2379,https://192.168.10.101:2379,https://192.168.10.102:2379 endpoint status
//使用kubectl工具确认集群是否正常,如果集群没有恢复需要继续执行以上步骤
kubectl get node
kubectl get pod
遇到的问题
etcd报错集群id不匹配,可能是因为IP地址和name地址错误导致
etcd.yaml 文件需要包含 --initial-cluster-state=existing
etcd流程图
猜你喜欢
- 2024-11-16 Docker网络这样理解会更简单(二)(docker 网络)
- 2024-11-16 Docker 和 Kubernetes 介绍(docker与kubernetes)
- 2024-11-16 通过项目学习Go开发之系统环境搭建
- 2024-11-16 容器可视化-Kuboard(容器可视化管理平台kubesphere)
- 2024-11-16 Docker 从入门到实践(docker从入门到精通)
- 2024-11-16 Docker 容器网络番外篇-VxLan(docker的网络)
- 2024-11-16 使用统一证书的方式部署ETCD3.5 集群(一)
- 2024-11-16 有想学docker的吗?我来倾馕相助了,143页docker入门资料免费送
- 2024-11-16 全新一代API网关,带可视化管理,文档贼友好
- 2024-11-16 Docker网络架构是什么?包含哪些哪些核心组件与驱动?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)