我有一个kubernetes集群,它有一个主节点和两个节点。由于某种原因,集群的一个节点变得不可访问,所以所有的pod都被移到了另一个节点。问题是损坏的节点保留在集群中,但我认为主节点应该自动删除该节点并创建另一个节点。有人能帮帮我吗?
5vf7fwbs1#
如果您在GKE上工作并具有HA群集,则如果您打开了自动缩放模式,则处于NotReady状态的节点应在几分钟后自动删除。稍后将添加新节点。
如果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
$ sudo journalctl -u kubelet
$ kubectl drain <node name> --delete-local-data --force --ignore-daemonsets
$ kubectl delete node <node name>
$ kubeadm reset
$ iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
$ ipvsadm -C
$ shutdown -h
在这种情况下,新节点不会自动添加。希望这能帮上忙。
piztneat2#
我遇到另一种情况,在AWS EKS中,节点已从AWS控制台终止,然后我发现无法通过命令kubectl delete node <node_name>删除EKS节点最后,我了解到由于finalizer,节点在删除时停滞按照以下步骤操作,即可从群集中清除节点
kubectl delete node <node_name>
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 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 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
cl25kdpy3#
1.封锁节点1.排空节点1.删除节点1.重置节点(如果使用kubeadm加入节点,则运行kubeadm reset命令)1.作为新节点再次加入该节点
dwthyt8l4#
一旦网络无法访问节点,例如停止响应ping-主节点将自动从群集中删除此节点。您可以通过以下方式手动删除节点:
kubectl delete node NODE_NAME
4条答案
按热度按时间5vf7fwbs1#
如果您在GKE上工作并具有HA群集,则如果您打开了自动缩放模式,则处于NotReady状态的节点应在几分钟后自动删除。稍后将添加新节点。
如果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
在这种情况下,新节点不会自动添加。
希望这能帮上忙。
piztneat2#
我遇到另一种情况,在AWS EKS中,节点已从AWS控制台终止,然后我发现无法通过命令
kubectl delete node <node_name>
删除EKS节点最后,我了解到由于finalizer,节点在删除时停滞
按照以下步骤操作,即可从群集中清除节点
尝试删除状态为
NotReady
的节点,但无法将其删除。因此,当您在3个以上的
NotReady
节点上运行kubectl delete node
时,无法删除它们。封锁节点
排空节点
如果运行
kubectl delete node <node_name
,这些节点仍然无法删除。清理终结器
删除节点
现在你可以删除它了
cl25kdpy3#
1.封锁节点
1.排空节点
1.删除节点
1.重置节点(如果使用kubeadm加入节点,则运行kubeadm reset命令)
1.作为新节点再次加入该节点
dwthyt8l4#
一旦网络无法访问节点,例如停止响应ping-主节点将自动从群集中删除此节点。
您可以通过以下方式手动删除节点: