You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何停止RKE K8s工作节点kubelet服务以模拟节点NotReady状态

RKE环境模拟节点NotReady状态验证污点与容忍度的操作方法

RKE部署的Kubernetes集群中,kubelet以容器化方式托管运行,未注册为systemd系统服务,因此执行systemctl stop kubelet.service会触发Unit kubelet.service not loaded报错。

可根据验证场景选择以下两种操作方式:

  • 模拟真实节点故障场景

    1. 登录需要置为NotReady状态的目标节点,执行命令查询kubelet容器ID:
      docker ps --filter "name=kubelet" -q
    2. 停止查询到的kubelet容器:
      docker stop $(docker ps --filter "name=kubelet" -q)
    3. 等待40秒-2分钟,控制平面判定节点失联后,会自动给节点添加node.kubernetes.io/not-ready:NoSchedule、node.kubernetes.io/unreachable:NoSchedule污点,此时即可验证容忍度的调度、驱逐逻辑。
    4. 验证完成后恢复节点状态,启动kubelet容器即可:
      docker start $(docker ps --filter "name=kubelet" -a -q)
  • 快速验证污点/容忍度匹配逻辑(无需模拟真实故障)
    如果仅需要验证污点与容忍度的匹配规则,不需要还原节点故障的完整链路,可以直接手动给目标节点打对应污点:

    1. 执行命令添加NotReady污点:
      kubectl taint nodes <你的目标节点名> node.kubernetes.io/not-ready=:NoSchedule
    2. 验证完成后删除该污点即可恢复:
      kubectl taint nodes <你的目标节点名> node.kubernetes.io/not-ready:NoSchedule-

注意:若需要验证NotReady节点上的Pod驱逐逻辑,需要等待默认5分钟的Pod驱逐超时时间(由kube-controller-manager的pod-eviction-timeout参数控制,RKE默认值为5分钟),节点刚进入NotReady状态时不会立刻驱逐存量Pod。

内容的提问来源于stack exchange,提问作者Ashok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:57:31