我的ceph集群在3 masters 3 workers
配置的AWS上运行。当我执行kubectl get nodes
时,它向我显示所有处于ready
状态的节点。
有什么方法可以手动模拟以获取节点的nodeNotReady
错误?。
答案 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
的目的是什么kubectl cordon node
NODE_NAME
,这样会将不可计划的异味添加到其中,并防止在此处安排新的广告连播。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