如何在Kubernetes中删除损坏的节点

igetnqfo  于 2023-01-16  发布在  Kubernetes
关注(0)|答案(4)|浏览(230)

我有一个kubernetes集群,它有一个主节点和两个节点。由于某种原因,集群的一个节点变得不可访问,所以所有的pod都被移到了另一个节点。问题是损坏的节点保留在集群中,但我认为主节点应该自动删除该节点并创建另一个节点。
有人能帮帮我吗?

5vf7fwbs

5vf7fwbs1#

    • I选项:**

如果您在GKE上工作并具有HA群集,则如果您打开了自动缩放模式,则处于NotReady状态的节点应在几分钟后自动删除。稍后将添加新节点。

    • II选项:**如果使用kubeadm:

如果HA群集上没有自动扩展模式,则不会自动删除状态为NotReady的节点。将持续检查并重新启动节点。
如果您让Prometheus检查节点上发生的指标,该节点处于NotReady状态或从无法访问的节点执行命令:
$ sudo journalctl -u kubelet
如果要删除状态为NotReady的节点,应手动执行此操作:
在关闭节点之前,应先排空节点并确保节点为空。
$ kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
$ kubectl delete node <node name>
然后,在要删除的节点上,重置所有kubeadm installed状态:
$ kubeadm reset
重置过程不会重置或清除iptables规则或IPVS表。如果要重置iptables,必须手动执行此操作:
$ iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
如果要重置IPVS表,必须运行以下命令:
$ ipvsadm -C
您也可以简单地关闭所需节点:
$ shutdown -h

  • *-h**表示halt,而现在则明确表示该指令应立即执行。可以使用不同的延迟。例如,您可以使用+6,它将告诉计算机在6分钟内运行关机程序。

在这种情况下,新节点不会自动添加。
希望这能帮上忙。

piztneat

piztneat2#

我遇到另一种情况,在AWS EKS中,节点已从AWS控制台终止,然后我发现无法通过命令kubectl delete node <node_name>删除EKS节点
最后,我了解到由于finalizer,节点在删除时停滞
按照以下步骤操作,即可从群集中清除节点

尝试删除状态为NotReady的节点,但无法将其删除。

$  kk get nodes
NAME                                                 STATUS     ROLES    AGE   VERSION
ip-192-168-103-252.ap-southeast-2.compute.internal   NotReady   <none>   26h   v1.22.6-eks-7d68063
ip-192-168-106-14.ap-southeast-2.compute.internal    NotReady   <none>   26h   v1.22.6-eks-7d68063
ip-192-168-126-54.ap-southeast-2.compute.internal    NotReady   <none>   26h   v1.22.6-eks-7d68063
ip-192-168-128-106.ap-southeast-2.compute.internal   Ready      <none>   43m   v1.22.6-eks-7d68063
ip-192-168-179-235.ap-southeast-2.compute.internal   Ready      <none>   12h   v1.22.6-eks-7d68063

因此,当您在3个以上的NotReady节点上运行kubectl delete node时,无法删除它们。

封锁节点

$ kubectl cordon ip-192-168-103-252.ap-southeast-2.compute.internal

排空节点

$ kubectl drain ip-192-168-103-252.ap-southeast-2.compute.internal --force --ignore-daemonsets

如果运行kubectl delete node <node_name,这些节点仍然无法删除。

清理终结器

$ kubectl patch node/ip-192-168-103-252.ap-southeast-2.compute.internal -p '{"metadata":{"finalizers":[]}}' --type=merge

删除节点

现在你可以删除它了

$ kubectl delete node ip-192-168-103-252.ap-southeast-2.compute.internal 

$ kubectl get nodes
cl25kdpy

cl25kdpy3#

1.封锁节点
1.排空节点
1.删除节点
1.重置节点(如果使用kubeadm加入节点,则运行kubeadm reset命令)
1.作为新节点再次加入该节点

dwthyt8l

dwthyt8l4#

一旦网络无法访问节点,例如停止响应ping-主节点将自动从群集中删除此节点。
您可以通过以下方式手动删除节点:

kubectl delete node NODE_NAME

相关问题