如何在Kubernetes中为节点模拟nodeNotReady

时间:2019-06-20 10:40:56

标签: kubernetes openshift

我的ceph集群在3 masters 3 workers配置的AWS上运行。当我执行kubectl get nodes时,它向我显示所有处于ready状态的节点。 有什么方法可以手动模拟以获取节点的nodeNotReady错误?。

3 个答案:

答案 0 :(得分:0)

只需在要查看为NodeNotReady的节点之一上停止kebelet服务

答案 1 :(得分:0)

如果仅需要NodeNotReady,则可以删除已安装的CNI。 kubectl get all -n kube-system找到您的CNI的DaemonSet并将其删除,或者相反进行安装:kubectl delete -f link_to_your_CNI_yaml

您还可以尝试使用过多的pod(资源)使节点不堪重负。您也可以分享您的主要目标,以便我们调整答案。

关于P Ekambaram的答案,您可以只向一个节点SSH然后停止kubelet。

要做到这一点,您可以:

ssh -A admin@Node_PublicDNS_name

systemctl stop kubelet

编辑: 另一种方法是使Node重载,这将导致:System OOM encountered,并导致Node NotReady状态。 这只是实现它的方法之一: SSH进入要进入NotReady的节点 安装Stress 奔跑压力:stress --cpu 8 --io 4 --hdd 10 --vm 4 --vm-bytes 1024M --timeout 5m(您当然可以调整值) 等待节点崩溃。 消除压力后,节点应自动回到健康状态。

答案 2 :(得分:0)

不确定模拟 NotReady

的目的是什么
  1. 如果目的是不安排任何新的广告连播,那么您可以使用kubectl cordon node NODE_NAME,这样会将不可计划的异味添加到其中,并防止在此处安排新的广告连播。
  2. 如果目的是驱逐现有的吊舱,则可以使用kubectl drain NODE_NAME

通常,您可以与taints and toleration一起达成上述目标,并且可以实现更多目标!

现在未就绪状态来自污染 node.kubernetes.io/未就绪 Ref

设置
  

在版本1.13中,TaintBasedEvictions功能已升级为Beta,并在默认情况下启用,因此NodeController会自动添加污点

因此,如果要手动设置污点kubectl taint node NODE_NAME node.kubernetes.io/not-ready=:NoExecute,NodeController会自动将其重置!

因此,绝对查看未就绪状态this是最好的方法

最后,如果您要删除特定节点中的网络,则可以像这样kubectl taint node NODE_NAME dedicated/not-ready=:NoExecute