您当前的位置:首页 > 计算机 > 服务器 > 网络服务

记一次kubesphere断电重启后master正常worker节点pod无法调度问题

时间:08-05来源:作者:点击数:
城东书院 www.cdsy.xyz

注意:该kubeshpere使用用kk 安装,且还保留了原始文件。

问题表象1:进入到所有的worker 节点的pod都会报错

*** 26s (x19 over 21m) default-scheduler 0/6 nodes are available: 3 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn’t tolerate, 3 node(s) had taint {node.kubernetes.io/unreachable: }, that the pod didn’t tolerate***

问题表象2:三个worker节点都有污点,且禁止调度

看到表象2的时候感觉是内部通讯问题,就到后台去用命令查看

kubectl get nodes

几个worker节点状态都是 NotReady

研究了很久

什么 apiserver ,kubelet 等等都看了,

老是有些莫名其妙的报错

报错1:
3月 03 10:12:55 worker0 kubelet[1201]: E0303 10:12:55.755939    1201 kubelet.go:2456] "Error getting node" err="node \"worker0\" not found"

报错2:v1.RuntimeClass: failed to list *v1.RuntimeClass: Get "https://127.0.0.1:6443/apis/node.k8s.io/v1/runtimeclasses?limit=500&resourceVersion=0": dial tcp 127.0.0.1:6443: connect: connection refused

apiserver报错:metrics-server   Error from server (InternalError): Internal error occurred: Authorization error (user=kube-apiserver-kubelet-client, verb=get, resource=nodes, subresource=proxy)

其实前面连个报错晚上多多少少都有些资料,但是可我这个情况不同。

最后处理方法:

整个集群主要是worker节点有问题

我就把其中一个worker节点从集群里面去掉

步骤:

1.删除节点

在删除节点之前,确保该节点上的所有 Pod 都已迁移或删除。

kubectl get nodes

确保节点没有正在运行的关键服务或 Pod。如果有,可以先手动删除或迁移它们。

然后删除节点:

kubectl delete node <node-name>

这将从 Kubernetes 集群中删除该节点,但不会删除该节点上的 Kubelet 服务和相关的配置。

2.在节点上清理旧的 Kubernetes 配置

在节点上执行以下步骤,以确保清理所有旧的 Kubernetes 配置并准备好重新加入集群。

a. 停止 Kubelet 服务

sudo systemctl stop kubelet

b. 清理 Kubelet 配置和证书

在节点上删除 Kubelet 的配置和证书(确保备份重要数据之前的配置)。

sudo rm -rf /etc/kubernetes/
sudo rm -rf /var/lib/kubelet/
sudo rm -rf /etc/cni/

c. 清理 Docker(如果使用 Docker)

如果使用 Docker 作为容器运行时,可以清除 Docker 的相关配置和镜像。

sudo docker system prune -a

3.添加节点

如果之前kk安装的sample-config.yaml 文件和安装包还在,可以直接执行

./kk add nodes -f sample.yaml

配置:

···

spec:

hosts:

{name: master1, address: 192.168.0.3, internalAddress: 192.168.0.3, user: root, password: Qcloud@123}

{name: node1, address: 192.168.0.4, internalAddress: 192.168.0.4, user: root, password: Qcloud@123}

{name: node2, address: 192.168.0.5, internalAddress: 192.168.0.5, user: root, password: Qcloud@123}

roleGroups:

etcd:

master1

master:

master1

worker:

node1

node2

···

安装完成后,您将能够在 KubeSphere 的控制台上查看新节点及其信息。在集群管理页面,选择左侧菜单节点管理下的集群节点,或者执行命令 kubectl get node 以检查更改。

城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐