16

win10强制关机,虚拟机k8s集群崩盘

 4 years ago
source link: https://www.ishells.cn/archives/win10-down-vm-k8s-etcd-error
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
win10强制关机,虚拟机k8s集群崩盘

win10强制关机,虚拟机k8s集群崩盘

15 次访问 2020-12-24
Scroll Down

因为内存条问题,电脑蓝屏了,并且强制干掉了我的k8s集群,当我重新打开虚拟机的时候,master 节点不能使用kubectl命令,经排查master节点的API-Server、Scheduler、Controller、Kubelet、kube-proxy等组件都重新启动了,但是etcd无法重启,且Kubelet会报错无法找到当前node

Dec 24 09:13:34 k8s-master1 kubelet: E1224 09:13:34.075124    1741 kubelet.go:2267] node "k8s-master1" not found

image.png

2、尝试解决

这种情况的话属于一个特殊个例,一般的生产环境的k8s集群都不会说突然给你搞个强制关机啥的,所以网上的经验贴也还是挺少的。

2.1 首先需要确定自己机器的swap是临时关闭的,还是永久关闭的

# 临时关闭# swapoff -a# 永久关闭# sed -ri 's/.*swap.*/#&/' /etc/fstab

关于为什么要关闭swap

2.2 解决方法

看到了这么一个解决方法

找到自己的etcd的配置文件,我的路径在/opt/etcd/cfg/etcd.conf

image.png

2.2.1第一种解决方案( 并未解决 )

ETCD_INITIAL_CLUSTER_STATE=NEW 修改成 ETCD_INITIAL_CLUSTER_STATE=existing,表示加入已有的集群,然后重新启动etcd

2.2.2 第二种解决方案( 解决,引新思考 )

如上配置图,其中有一行ETCD_DATA_DIR="/var/lib/etcd/default.etcd",这个目录是用来存储etcd数据的目录(后知),这第二种解决方案就是删除所有etcd节点这里的数据,但本着不删库不跑路的思想,我给它备份到了另一个目录下,然后痛快删除了etcd集群所有节点这里的数据,

image.png

image.png

然后etcd算是重启成功了,

# 检查etcd集群健康状况也都是healthy# ETCDCTL_API=3 /opt/etcd/bin/etcdctl --cacert=/opt/etcd/ssl/ca.pem --cert=/opt/etcd/ssl/server.pem --key=/opt/etcd/ssl/server-key.pem --endpoints="https://192.168.52.10:2379,https://192.168.52.20:2379,https://192.168.52.21:2379" endpoint health

image.png

但是问题是,现在重新创建Pod资源直接Pending,我感觉不对劲,于是又get pod -n kube-system发现系统的Pod也一个都没有了!

怪不得我觉得不对劲,数据可以随便删嘛?这etcd存放的是不是Kubernetes所有集群数据?然后我咨询了大佬

image.png

image.png

果不其然,这个数据果然是存储etcd数据的目录,我这一下算是把啥都删完了

前面当我看到etcd都健康,我就随手把cp的数据给删了……

没办法,我就重新一步一步的,重新安装了flennel、重新授权apiserver访问kubelet、重新部署了coreDNS等,还好证书什么都是在的,不用重新弄了,node节点重新加入集群。完成这些,重新部署自己写的Pod算是正常了,但我这也相当于一个新的k8s集群了,所以涉及到数据,一定要谨慎一些,虽然生产环境数据会有备份,会做持久化,但还是要避免这些操作!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK