设置k8s节点为不可调度
K8S 手动标记节点为不可调度,排空节点
节点也可以手动被标记为不可调度并排空。不涉及细节,这些工作可用以下 kubectl 命令完成:
kubectl cordon <node> 标记节点为不可调度(但对其上的pod不做任何事 )
kubectl drain <node> 标记节点为不可调度,随后疏散其上所有pod
kubectl drain nodename --delete-local-data --ignore-daemonsets --force
- --force 当一些pod不是经 ReplicationController, ReplicaSet, Job, DaemonSet 或者 StatefulSet 管理的时候就需要用--force来强制执行 (例如:kube-proxy)
- --ignore-daemonsets 无视DaemonSet管理下的Pod。即--ignore-daemonsets往往需要指定的,这是因为deamonset会忽略unschedulable标签(使用kubectl drain时会自动给节点打上不可调度标签),因此deamonset控制器控制的pod被删除后可能马上又在此节点上启动起来,这样就会成为死循环.因此这里忽略daemonset。
- --delete-local-data 如果有mount local volumn的pod,会强制杀掉该pod。
两种情形下, 在你用 kubectl uncordon <node > 解除节点的不可调度之前,不会有新pod 被 调度到该节点上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?